Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // TODO: return responses in json format
- use std::sync::Arc;
- use tokio::{io::AsyncWriteExt, net::tcp::OwnedWriteHalf, sync::Mutex};
- use crate::{queries::select_query, state, structs};
- pub async fn select(
- write: Arc<Mutex<OwnedWriteHalf>>,
- command: structs::CommandData,
- user: Arc<Mutex<state::ClientState>>,
- keyspace: Option<String>,
- table: Option<String>,
- ) {
- let mut write = write.lock().await;
- let mut user = user.lock().await;
- if !user.connected {
- let response = "Not connected to scylla";
- write.write_all(response.as_bytes()).await.unwrap();
- write.shutdown().await.unwrap();
- return;
- }
- match command {
- structs::CommandData::Select(select_data) => {
- let query = select_query(
- keyspace.to_owned().unwrap(),
- table.to_owned().unwrap(),
- select_data,
- );
- println!("query: {:?}", query);
- let session = user.session.as_ref().unwrap().lock().await;
- let rows = session.query(query.query, query.values).await.unwrap();
- }
- _ => {
- println!("Unknown command data: {:?}", command);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement