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}