mapuche_embedded/cmd/
hvals.rs

1use crate::Frame;
2
3use crate::cmd::Invalid;
4use crate::rocks::client::RocksClient;
5use crate::rocks::hash::HashCommand;
6
7use serde::{Deserialize, Serialize};
8
9use crate::rocks::Result as RocksResult;
10use crate::utils::resp_invalid_arguments;
11
12#[derive(Serialize, Deserialize, Debug, Clone)]
13pub struct Hvals {
14    key: String,
15    valid: bool,
16}
17
18impl Hvals {
19    pub fn new(key: impl ToString) -> Hvals {
20        Hvals {
21            key: key.to_string(),
22            valid: true,
23        }
24    }
25
26    /// Get the key
27    pub fn key(&self) -> &str {
28        &self.key
29    }
30
31    pub async fn execute(&self, client: &RocksClient) -> RocksResult<Frame> {
32        if !self.valid {
33            return Ok(resp_invalid_arguments());
34        }
35        HashCommand::new(client)
36            .hgetall(&self.key, false, true)
37            .await
38    }
39}
40
41impl Invalid for Hvals {
42    fn new_invalid() -> Hvals {
43        Hvals {
44            key: "".to_owned(),
45            valid: false,
46        }
47    }
48}