qdrant_client/builders/
move_shard_builder.rs

1use crate::qdrant::*;
2
3#[derive(Clone)]
4pub struct MoveShardBuilder {
5    /// Local shard id
6    pub(crate) shard_id: Option<u32>,
7    pub(crate) to_shard_id: Option<Option<u32>>,
8    pub(crate) from_peer_id: Option<u64>,
9    pub(crate) to_peer_id: Option<u64>,
10    pub(crate) method: Option<Option<i32>>,
11}
12
13impl MoveShardBuilder {
14    /// Local shard id
15    #[allow(unused_mut)]
16    pub fn shard_id(self, value: u32) -> Self {
17        let mut new = self;
18        new.shard_id = Option::Some(value);
19        new
20    }
21    #[allow(unused_mut)]
22    pub fn to_shard_id(self, value: u32) -> Self {
23        let mut new = self;
24        new.to_shard_id = Option::Some(Option::Some(value));
25        new
26    }
27    #[allow(unused_mut)]
28    pub fn from_peer_id(self, value: u64) -> Self {
29        let mut new = self;
30        new.from_peer_id = Option::Some(value);
31        new
32    }
33    #[allow(unused_mut)]
34    pub fn to_peer_id(self, value: u64) -> Self {
35        let mut new = self;
36        new.to_peer_id = Option::Some(value);
37        new
38    }
39    #[allow(unused_mut)]
40    pub fn method<VALUE: core::convert::Into<i32>>(self, value: VALUE) -> Self {
41        let mut new = self;
42        new.method = Option::Some(Option::Some(value.into()));
43        new
44    }
45
46    fn build_inner(self) -> Result<MoveShard, MoveShardBuilderError> {
47        Ok(MoveShard {
48            shard_id: match self.shard_id {
49                Some(value) => value,
50                None => {
51                    return Result::Err(core::convert::Into::into(
52                        ::derive_builder::UninitializedFieldError::from("shard_id"),
53                    ));
54                }
55            },
56            to_shard_id: self.to_shard_id.unwrap_or_default(),
57            from_peer_id: match self.from_peer_id {
58                Some(value) => value,
59                None => {
60                    return Result::Err(core::convert::Into::into(
61                        ::derive_builder::UninitializedFieldError::from("from_peer_id"),
62                    ));
63                }
64            },
65            to_peer_id: match self.to_peer_id {
66                Some(value) => value,
67                None => {
68                    return Result::Err(core::convert::Into::into(
69                        ::derive_builder::UninitializedFieldError::from("to_peer_id"),
70                    ));
71                }
72            },
73            method: self.method.unwrap_or_default(),
74        })
75    }
76    /// Create an empty builder, with all fields set to `None` or `PhantomData`.
77    fn create_empty() -> Self {
78        Self {
79            shard_id: core::default::Default::default(),
80            to_shard_id: core::default::Default::default(),
81            from_peer_id: core::default::Default::default(),
82            to_peer_id: core::default::Default::default(),
83            method: core::default::Default::default(),
84        }
85    }
86}
87
88impl From<MoveShardBuilder> for MoveShard {
89    fn from(value: MoveShardBuilder) -> Self {
90        value.build_inner().unwrap_or_else(|_| {
91            panic!(
92                "Failed to convert {0} to {1}",
93                "MoveShardBuilder", "MoveShard"
94            )
95        })
96    }
97}
98
99impl MoveShardBuilder {
100    /// Builds the desired type. Can often be omitted.
101    pub fn build(self) -> MoveShard {
102        self.build_inner().unwrap_or_else(|_| {
103            panic!(
104                "Failed to build {0} into {1}",
105                "MoveShardBuilder", "MoveShard"
106            )
107        })
108    }
109}
110
111impl MoveShardBuilder {
112    pub(crate) fn empty() -> Self {
113        Self::create_empty()
114    }
115}
116
117/// Error type for MoveShardBuilder
118#[non_exhaustive]
119#[derive(Debug)]
120pub enum MoveShardBuilderError {
121    /// Uninitialized field
122    UninitializedField(&'static str),
123    /// Custom validation error
124    ValidationError(String),
125}
126
127// Implementing the Display trait for better error messages
128impl std::fmt::Display for MoveShardBuilderError {
129    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
130        match self {
131            Self::UninitializedField(field) => {
132                write!(f, "`{field}` must be initialized")
133            }
134            Self::ValidationError(error) => write!(f, "{error}"),
135        }
136    }
137}
138
139// Implementing the Error trait
140impl std::error::Error for MoveShardBuilderError {}
141
142// Implementing From trait for conversion from UninitializedFieldError
143impl From<derive_builder::UninitializedFieldError> for MoveShardBuilderError {
144    fn from(error: derive_builder::UninitializedFieldError) -> Self {
145        Self::UninitializedField(error.field_name())
146    }
147}
148
149// Implementing From trait for conversion from String
150impl From<String> for MoveShardBuilderError {
151    fn from(error: String) -> Self {
152        Self::ValidationError(error)
153    }
154}