Skip to content

Commit 91c7205

Browse files
committed
pub
1 parent eeb54b7 commit 91c7205

2 files changed

Lines changed: 114 additions & 114 deletions

File tree

duva-client/src/cli/main.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use duva::{
1111
use duva_client::{
1212
broker::BrokerMessage,
1313
command::{InputContext, separate_command_and_args},
14-
controller::ClientController,
14+
controller::{ClientController, print_res},
1515
observability::{ObservabilityConfig, init_observability_with_config},
1616
};
1717

@@ -59,7 +59,7 @@ async fn main() -> anyhow::Result<()> {
5959
.await;
6060

6161
let (kind, query_io) = rx.await?;
62-
controller.print_res(kind, query_io);
62+
print_res(kind, query_io);
6363
tracing::debug!(command = %cmd, "Command completed successfully");
6464
},
6565
Err(e) => {

duva-client/src/controller.rs

Lines changed: 112 additions & 112 deletions
Original file line numberDiff line numberDiff line change
@@ -26,136 +26,136 @@ impl<T> ClientController<T> {
2626
tokio::spawn(broker.run());
2727
Ok(Self { broker_tx, target: editor })
2828
}
29+
}
2930

30-
fn render_return(&self, kind: ClientAction, query_io: QueryIO) -> Response {
31-
use ClientAction::*;
32-
use NonMutatingAction::*;
33-
34-
match kind {
35-
NonMutating(
36-
Ping
37-
| Get { .. }
38-
| LIndex { .. }
39-
| IndexGet { .. }
40-
| Echo { .. }
41-
| Config { .. }
42-
| Info
43-
| ClusterForget { .. }
44-
| ReplicaOf { .. }
45-
| ClusterInfo,
46-
) => match query_io {
47-
QueryIO::Null => Response::Null,
48-
QueryIO::SimpleString(value) => Response::String(value),
49-
QueryIO::BulkString(value) => Response::String(value),
50-
QueryIO::Err(value) => Response::Error(value),
51-
_err => Response::FormatError,
52-
},
53-
Mutating(LogEntry::Delete { .. }) | NonMutating(Exists { .. } | LLen { .. }) => {
54-
if let QueryIO::Err(value) = query_io {
55-
return Response::Error(value);
56-
}
31+
fn render_return(kind: ClientAction, query_io: QueryIO) -> Response {
32+
use ClientAction::*;
33+
use NonMutatingAction::*;
5734

58-
let QueryIO::SimpleString(value) = query_io else {
59-
return Response::FormatError;
60-
};
61-
match str::from_utf8(&value) {
62-
Ok(int) => Response::Integer(int.to_string().into()),
63-
Err(_) => Response::Error("ERR value is not an integer or out of range".into()),
64-
}
65-
},
35+
match kind {
36+
NonMutating(
37+
Ping
38+
| Get { .. }
39+
| LIndex { .. }
40+
| IndexGet { .. }
41+
| Echo { .. }
42+
| Config { .. }
43+
| Info
44+
| ClusterForget { .. }
45+
| ReplicaOf { .. }
46+
| ClusterInfo,
47+
) => match query_io {
48+
QueryIO::Null => Response::Null,
49+
QueryIO::SimpleString(value) => Response::String(value),
50+
QueryIO::BulkString(value) => Response::String(value),
51+
QueryIO::Err(value) => Response::Error(value),
52+
_err => Response::FormatError,
53+
},
54+
Mutating(LogEntry::Delete { .. }) | NonMutating(Exists { .. } | LLen { .. }) => {
55+
if let QueryIO::Err(value) = query_io {
56+
return Response::Error(value);
57+
}
6658

67-
NonMutating(Ttl { .. })
68-
| Mutating(
69-
LogEntry::IncrBy { .. }
70-
| LogEntry::DecrBy { .. }
71-
| LogEntry::LPush { .. }
72-
| LogEntry::RPush { .. }
73-
| LogEntry::LPushX { .. }
74-
| LogEntry::RPushX { .. },
75-
) => match query_io {
76-
QueryIO::SimpleString(value) => {
77-
let s = String::from_utf8_lossy(&value);
78-
let s: Option<i64> = IndexedValueCodec::decode_value(s);
79-
Response::Integer(s.unwrap().to_string().into())
80-
},
81-
QueryIO::Err(value) => Response::Error(value),
59+
let QueryIO::SimpleString(value) = query_io else {
60+
return Response::FormatError;
61+
};
62+
match str::from_utf8(&value) {
63+
Ok(int) => Response::Integer(int.to_string().into()),
64+
Err(_) => Response::Error("ERR value is not an integer or out of range".into()),
65+
}
66+
},
8267

83-
_ => Response::FormatError,
84-
},
85-
NonMutating(Save) => {
86-
let QueryIO::Null = query_io else {
87-
return Response::FormatError;
88-
};
89-
Response::Null
90-
},
91-
Mutating(LogEntry::Set { .. } | LogEntry::LTrim { .. } | LogEntry::LSet { .. }) => {
92-
match query_io {
93-
QueryIO::SimpleString(_) => Response::String("OK".into()),
94-
QueryIO::Err(value) => Response::Error(value),
95-
_ => Response::FormatError,
96-
}
68+
NonMutating(Ttl { .. })
69+
| Mutating(
70+
LogEntry::IncrBy { .. }
71+
| LogEntry::DecrBy { .. }
72+
| LogEntry::LPush { .. }
73+
| LogEntry::RPush { .. }
74+
| LogEntry::LPushX { .. }
75+
| LogEntry::RPushX { .. },
76+
) => match query_io {
77+
QueryIO::SimpleString(value) => {
78+
let s = String::from_utf8_lossy(&value);
79+
let s: Option<i64> = IndexedValueCodec::decode_value(s);
80+
Response::Integer(s.unwrap().to_string().into())
9781
},
98-
NonMutating(ClusterMeet { .. } | ClusterReshard) => match query_io {
99-
QueryIO::Null => Response::String("OK".into()),
100-
QueryIO::Err(value) => Response::Error(value),
101-
_ => Response::FormatError,
102-
},
103-
Mutating(LogEntry::Append { .. }) => match query_io {
104-
QueryIO::SimpleString(value) => Response::String(value),
82+
QueryIO::Err(value) => Response::Error(value),
83+
84+
_ => Response::FormatError,
85+
},
86+
NonMutating(Save) => {
87+
let QueryIO::Null = query_io else {
88+
return Response::FormatError;
89+
};
90+
Response::Null
91+
},
92+
Mutating(LogEntry::Set { .. } | LogEntry::LTrim { .. } | LogEntry::LSet { .. }) => {
93+
match query_io {
94+
QueryIO::SimpleString(_) => Response::String("OK".into()),
10595
QueryIO::Err(value) => Response::Error(value),
10696
_ => Response::FormatError,
107-
},
108-
Mutating(LogEntry::LPop { .. } | LogEntry::RPop { .. })
109-
| NonMutating(Keys { .. } | MGet { .. } | LRange { .. }) => {
110-
if let QueryIO::Null = query_io {
111-
return Response::Null;
112-
}
113-
let QueryIO::Array(value) = query_io else {
97+
}
98+
},
99+
NonMutating(ClusterMeet { .. } | ClusterReshard) => match query_io {
100+
QueryIO::Null => Response::String("OK".into()),
101+
QueryIO::Err(value) => Response::Error(value),
102+
_ => Response::FormatError,
103+
},
104+
Mutating(LogEntry::Append { .. }) => match query_io {
105+
QueryIO::SimpleString(value) => Response::String(value),
106+
QueryIO::Err(value) => Response::Error(value),
107+
_ => Response::FormatError,
108+
},
109+
Mutating(LogEntry::LPop { .. } | LogEntry::RPop { .. })
110+
| NonMutating(Keys { .. } | MGet { .. } | LRange { .. }) => {
111+
if let QueryIO::Null = query_io {
112+
return Response::Null;
113+
}
114+
let QueryIO::Array(value) = query_io else {
115+
return Response::FormatError;
116+
};
117+
118+
let mut keys = Vec::new();
119+
for (i, item) in value.into_iter().enumerate() {
120+
let QueryIO::BulkString(value) = item else {
114121
return Response::FormatError;
115122
};
116-
117-
let mut keys = Vec::new();
118-
for (i, item) in value.into_iter().enumerate() {
123+
keys.push(Response::String(
124+
format!("{}) \"{}\"", i + 1, String::from_utf8_lossy(&value)).into(),
125+
));
126+
}
127+
Response::Array(keys)
128+
},
129+
NonMutating(Role | ClusterNodes) => match query_io {
130+
QueryIO::Array(value) => {
131+
let mut nodes = Vec::new();
132+
for item in value {
119133
let QueryIO::BulkString(value) = item else {
120134
return Response::FormatError;
121135
};
122-
keys.push(Response::String(
123-
format!("{}) \"{}\"", i + 1, String::from_utf8_lossy(&value)).into(),
124-
));
136+
nodes.push(Response::String(value));
125137
}
126-
Response::Array(keys)
127-
},
128-
NonMutating(Role | ClusterNodes) => match query_io {
129-
QueryIO::Array(value) => {
130-
let mut nodes = Vec::new();
131-
for item in value {
132-
let QueryIO::BulkString(value) = item else {
133-
return Response::FormatError;
134-
};
135-
nodes.push(Response::String(value));
136-
}
137-
Response::Array(nodes)
138-
},
139-
QueryIO::Err(value) => Response::Error(value),
140-
_ => Response::FormatError,
138+
Response::Array(nodes)
141139
},
140+
QueryIO::Err(value) => Response::Error(value),
141+
_ => Response::FormatError,
142+
},
142143

143-
ClientAction::Mutating(LogEntry::MSet { .. }) => unimplemented!(),
144-
ClientAction::Mutating(LogEntry::NoOp) => unreachable!(),
145-
}
144+
ClientAction::Mutating(LogEntry::MSet { .. }) => unimplemented!(),
145+
ClientAction::Mutating(LogEntry::NoOp) => unreachable!(),
146146
}
147+
}
147148

148-
pub fn print_res(&self, kind: ClientAction, query_io: QueryIO) {
149-
let action_debug = format!("{:?}", kind);
150-
let result = self.render_return(kind, query_io.clone());
151-
println!("{}", result);
149+
pub fn print_res(kind: ClientAction, query_io: QueryIO) {
150+
let action_debug = format!("{:?}", kind);
151+
let result = render_return(kind, query_io.clone());
152+
println!("{}", result);
152153

153-
// Log the command execution for observability
154-
tracing::info!(
155-
action = %action_debug,
156-
"Client command executed"
157-
);
158-
}
154+
// Log the command execution for observability
155+
tracing::info!(
156+
action = %action_debug,
157+
"Client command executed"
158+
);
159159
}
160160

161161
enum Response {

0 commit comments

Comments
 (0)