redis_cell_rs/
command.rs

1use crate::key::Key;
2use crate::policy::Policy;
3use redis::Cmd as RedisCmd;
4
5pub struct Cmd<'a> {
6    key: &'a Key<'a>,
7    policy: &'a Policy,
8}
9
10impl<'a> Cmd<'a> {
11    pub fn new(key: &'a Key<'a>, policy: &'a Policy) -> Self {
12        Cmd { key, policy }
13    }
14}
15
16impl From<&Cmd<'_>> for RedisCmd {
17    fn from(cmd: &Cmd<'_>) -> Self {
18        let mut redis_cmd = RedisCmd::new();
19        redis_cmd
20            .arg("CL.THROTTLE")
21            .arg(cmd.key)
22            .arg(cmd.policy.burst)
23            .arg(cmd.policy.tokens)
24            .arg(cmd.policy.period.as_secs())
25            .arg(cmd.policy.apply);
26        redis_cmd
27    }
28}
29
30impl From<Cmd<'_>> for RedisCmd {
31    fn from(cmd: Cmd<'_>) -> Self {
32        RedisCmd::from(&cmd)
33    }
34}