qdrant_client/builders/
order_by_builder.rs1use crate::grpc_macros::convert_option;
2use crate::qdrant::*;
3
4#[must_use]
5#[derive(Clone)]
6pub struct OrderByBuilder {
7 pub(crate) key: Option<String>,
9 pub(crate) direction: Option<Option<i32>>,
11 start_from: Option<start_from::Value>,
13}
14
15impl OrderByBuilder {
16 pub fn key(self, value: String) -> Self {
18 let mut new = self;
19 new.key = Option::Some(value);
20 new
21 }
22 pub fn direction(self, value: i32) -> Self {
24 let mut new = self;
25 new.direction = Option::Some(Option::Some(value));
26 new
27 }
28 pub fn start_from<VALUE: core::convert::Into<start_from::Value>>(self, value: VALUE) -> Self {
30 let mut new = self;
31 new.start_from = Option::Some(value.into());
32 new
33 }
34
35 fn build_inner(self) -> Result<OrderBy, OrderByBuilderError> {
36 Ok(OrderBy {
37 key: match self.key {
38 Some(value) => value,
39 None => {
40 return Result::Err(core::convert::Into::into(
41 ::derive_builder::UninitializedFieldError::from("key"),
42 ));
43 }
44 },
45 direction: self.direction.unwrap_or_default(),
46 start_from: { convert_option(&self.start_from) },
47 })
48 }
49 fn create_empty() -> Self {
51 Self {
52 key: core::default::Default::default(),
53 direction: core::default::Default::default(),
54 start_from: core::default::Default::default(),
55 }
56 }
57}
58
59impl From<OrderByBuilder> for OrderBy {
60 fn from(value: OrderByBuilder) -> Self {
61 value
62 .build_inner()
63 .unwrap_or_else(|_| panic!("Failed to convert {0} to {1}", "OrderByBuilder", "OrderBy"))
64 }
65}
66
67impl OrderByBuilder {
68 pub fn build(self) -> OrderBy {
70 self.build_inner()
71 .unwrap_or_else(|_| panic!("Failed to build {0} into {1}", "OrderByBuilder", "OrderBy"))
72 }
73}
74
75impl OrderByBuilder {
76 pub(crate) fn empty() -> Self {
77 Self::create_empty()
78 }
79}
80
81#[non_exhaustive]
83#[derive(Debug)]
84pub enum OrderByBuilderError {
85 UninitializedField(&'static str),
87 ValidationError(String),
89}
90
91impl std::fmt::Display for OrderByBuilderError {
93 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
94 match self {
95 Self::UninitializedField(field) => {
96 write!(f, "`{field}` must be initialized")
97 }
98 Self::ValidationError(error) => write!(f, "{error}"),
99 }
100 }
101}
102
103impl std::error::Error for OrderByBuilderError {}
105
106impl From<derive_builder::UninitializedFieldError> for OrderByBuilderError {
108 fn from(error: derive_builder::UninitializedFieldError) -> Self {
109 Self::UninitializedField(error.field_name())
110 }
111}
112
113impl From<String> for OrderByBuilderError {
115 fn from(error: String) -> Self {
116 Self::ValidationError(error)
117 }
118}