1use serde::{Deserialize, Serialize};
2#[derive(Debug, Clone, Serialize, Deserialize)]
3pub enum Request {
4 Set { key: Vec<u8>, value: Vec<u8> },
5 Get { key: Vec<u8> },
6 Delete { key: Vec<u8> },
7 List,
8 Exists { key: Vec<u8> },
9 Count,
10 BatchGet { keys: Vec<Vec<u8>> },
11 Clear,
12}
13
14#[derive(Debug, Clone, Serialize, Deserialize)]
15pub struct RequestWrapper {
16 req: Request,
17 id: Vec<u8>,
18}
19
20impl RequestWrapper {
21 pub fn new(req: Request) -> Self {
22 Self {
23 req,
24 id: uuid::Uuid::new_v4().as_bytes().to_vec(),
25 }
26 }
27 pub fn id(&self) -> Vec<u8> {
28 self.id.clone()
29 }
30 pub fn req(&self) -> &Request {
31 &self.req
32 }
33 pub fn to_string(&self) -> String {
34 serde_json::to_string_pretty(self).unwrap()
35 }
36}