redis_event/cmd/
hashes.rs1use std::slice::Iter;
10
11#[derive(Debug)]
12pub struct HDEL<'a> {
13 pub key: &'a [u8],
14 pub fields: Vec<&'a [u8]>,
15}
16
17pub(crate) fn parse_hdel(mut iter: Iter<Vec<u8>>) -> HDEL {
18 let key = iter.next().unwrap();
19 let mut fields = Vec::new();
20 while let Some(field) = iter.next() {
21 fields.push(field.as_slice());
22 }
23 HDEL { key, fields }
24}
25
26#[derive(Debug)]
27pub struct HINCRBY<'a> {
28 pub key: &'a [u8],
29 pub field: &'a [u8],
30 pub increment: &'a [u8],
31}
32
33pub(crate) fn parse_hincrby(mut iter: Iter<Vec<u8>>) -> HINCRBY {
34 let key = iter.next().unwrap();
35 let field = iter.next().unwrap();
36 let increment = iter.next().unwrap();
37 HINCRBY { key, field, increment }
38}
39
40#[derive(Debug)]
41pub struct HMSET<'a> {
42 pub key: &'a [u8],
43 pub fields: Vec<Field<'a>>,
44}
45
46#[derive(Debug)]
47pub struct HSET<'a> {
48 pub key: &'a [u8],
49 pub fields: Vec<Field<'a>>,
50}
51
52#[derive(Debug)]
53pub struct Field<'a> {
54 pub name: &'a [u8],
55 pub value: &'a [u8],
56}
57
58pub(crate) fn parse_hmset(mut iter: Iter<Vec<u8>>) -> HMSET {
59 let key = iter.next().unwrap();
60 let mut fields = Vec::new();
61 loop {
62 if let Some(field) = iter.next() {
63 if let Some(value) = iter.next() {
64 let field = Field { name: field, value };
65 fields.push(field);
66 } else {
67 panic!("HMSET缺失field value");
68 }
69 } else {
70 break;
71 }
72 }
73 HMSET { key, fields }
74}
75
76pub(crate) fn parse_hset(mut iter: Iter<Vec<u8>>) -> HSET {
77 let key = iter.next().unwrap();
78 let mut fields = Vec::new();
79 loop {
80 if let Some(field) = iter.next() {
81 if let Some(value) = iter.next() {
82 let field = Field { name: field, value };
83 fields.push(field);
84 } else {
85 panic!("HSET缺失field value");
86 }
87 } else {
88 break;
89 }
90 }
91 HSET { key, fields }
92}
93
94#[derive(Debug)]
95pub struct HSETNX<'a> {
96 pub key: &'a [u8],
97 pub field: &'a [u8],
98 pub value: &'a [u8],
99}
100
101pub(crate) fn parse_hsetnx(mut iter: Iter<Vec<u8>>) -> HSETNX {
102 let key = iter.next().unwrap();
103 let field = iter.next().unwrap();
104 let value = iter.next().unwrap();
105 HSETNX { key, field, value }
106}