inve_etcd/kv/
compact.rs

1use crate::proto::etcdserverpb;
2use crate::ResponseHeader;
3
4#[derive(Debug, Clone)]
5pub struct CompactRequest {
6    proto: etcdserverpb::CompactionRequest,
7}
8
9impl CompactRequest {
10    pub fn new(revision: i64) -> Self {
11        Self {
12            proto: etcdserverpb::CompactionRequest {
13                revision,
14                physical: false,
15            },
16        }
17    }
18
19    pub fn physical(mut self) -> Self {
20        self.proto.physical = true;
21        self
22    }
23}
24
25impl From<CompactRequest> for etcdserverpb::CompactionRequest {
26    fn from(req: CompactRequest) -> Self {
27        req.proto
28    }
29}
30
31impl From<i64> for CompactRequest {
32    fn from(revision: i64) -> Self {
33        Self::new(revision)
34    }
35}
36
37#[derive(Debug, Clone)]
38pub struct CompactResponse {
39    pub header: ResponseHeader,
40}
41
42impl From<etcdserverpb::CompactionResponse> for CompactResponse {
43    fn from(proto: etcdserverpb::CompactionResponse) -> Self {
44        Self {
45            header: From::from(proto.header.expect("must fetch header")),
46        }
47    }
48}