Skip to main content

qdrant_client/grpc_conversions/
mod.rs

1mod extensions;
2pub mod metadata;
3mod primitives;
4pub mod vectors;
5
6use crate::payload::Payload;
7use crate::qdrant::point_id::PointIdOptions;
8use crate::qdrant::points_selector::PointsSelectorOneOf;
9use crate::qdrant::value::Kind;
10use crate::qdrant::{
11    alias_operations, condition, create_vector_name_request, group_id, points_update_operation,
12    quantization_config, quantization_config_diff, r#match, read_consistency, shard_key,
13    start_from, target_vector, update_collection_cluster_setup_request, vector_example,
14    vectors_config, vectors_config_diff, with_payload_selector, with_vectors_selector,
15    AbortShardTransfer, AbortShardTransferBuilder, AliasOperations, BinaryQuantization,
16    BinaryQuantizationBuilder, Condition, CreateAlias, CreateShardKey, DeleteAlias, DeleteShardKey,
17    DenseVectorCreationConfig, DenseVectorCreationConfigBuilder, Disabled, FieldCondition, Filter,
18    GeoLineString, GeoPoint, GroupId, HasIdCondition, IsEmptyCondition, IsNullCondition, ListValue,
19    Match, MoveShard, MoveShardBuilder, NestedCondition, PayloadExcludeSelector,
20    PayloadIncludeSelector, PointId, PointsIdsList, PointsSelector, PointsUpdateOperation,
21    ProductQuantization, ProductQuantizationBuilder, QuantizationConfig, QuantizationConfigDiff,
22    ReadConsistency, RenameAlias, Replica, ReplicateShard, ReplicateShardBuilder, RestartTransfer,
23    ScalarQuantization, ScalarQuantizationBuilder, ShardKey, ShardKeySelector, SparseIndexConfig,
24    SparseVectorCreationConfig, SparseVectorCreationConfigBuilder, SparseVectorParams, StartFrom,
25    Struct, TargetVector, TurboQuantization, TurboQuantizationBuilder, Value, Vector,
26    VectorExample, VectorParams, VectorParamsBuilder, VectorParamsDiff, VectorParamsDiffBuilder,
27    VectorParamsDiffMap, VectorParamsMap, VectorsConfig, VectorsConfigDiff, VectorsSelector,
28    WithPayloadSelector, WithVectorsSelector,
29};
30
31impl From<Vec<PointId>> for PointsSelector {
32    fn from(point_ids: Vec<PointId>) -> Self {
33        PointsSelector {
34            points_selector_one_of: Some(PointsSelectorOneOf::Points(PointsIdsList {
35                ids: point_ids,
36            })),
37        }
38    }
39}
40
41impl<T> From<Vec<T>> for Value
42where
43    T: Into<Value>,
44{
45    fn from(val: Vec<T>) -> Self {
46        Self {
47            kind: Some(Kind::ListValue(ListValue {
48                values: val.into_iter().map(|v| v.into()).collect(),
49            })),
50        }
51    }
52}
53
54impl From<Payload> for Value {
55    fn from(val: Payload) -> Self {
56        Self {
57            kind: Some(Kind::StructValue(Struct { fields: val.0 })),
58        }
59    }
60}
61
62impl From<shard_key::Key> for ShardKey {
63    fn from(key: shard_key::Key) -> Self {
64        ShardKey { key: Some(key) }
65    }
66}
67
68impl From<Vec<shard_key::Key>> for ShardKeySelector {
69    fn from(shard_keys: Vec<shard_key::Key>) -> Self {
70        ShardKeySelector {
71            shard_keys: shard_keys.into_iter().map(ShardKey::from).collect(),
72            fallback: None,
73        }
74    }
75}
76
77impl From<Vec<ShardKey>> for ShardKeySelector {
78    fn from(value: Vec<ShardKey>) -> Self {
79        Self {
80            shard_keys: value,
81            fallback: None,
82        }
83    }
84}
85
86impl From<vectors_config::Config> for VectorsConfig {
87    fn from(value: vectors_config::Config) -> Self {
88        VectorsConfig {
89            config: Some(value),
90        }
91    }
92}
93
94impl From<VectorParams> for vectors_config::Config {
95    fn from(value: VectorParams) -> Self {
96        Self::Params(value)
97    }
98}
99
100impl From<VectorParamsMap> for vectors_config::Config {
101    fn from(value: VectorParamsMap) -> Self {
102        Self::ParamsMap(value)
103    }
104}
105
106impl From<vectors_config_diff::Config> for VectorsConfigDiff {
107    fn from(value: vectors_config_diff::Config) -> Self {
108        Self {
109            config: Some(value),
110        }
111    }
112}
113
114impl From<VectorParamsDiff> for vectors_config_diff::Config {
115    fn from(value: VectorParamsDiff) -> Self {
116        Self::Params(value)
117    }
118}
119
120impl From<VectorParamsDiffMap> for vectors_config_diff::Config {
121    fn from(value: VectorParamsDiffMap) -> Self {
122        Self::ParamsMap(value)
123    }
124}
125
126impl From<SparseIndexConfig> for SparseVectorParams {
127    fn from(value: SparseIndexConfig) -> Self {
128        Self {
129            index: Some(value),
130            modifier: None,
131        }
132    }
133}
134
135impl From<quantization_config::Quantization> for QuantizationConfig {
136    fn from(value: quantization_config::Quantization) -> Self {
137        Self {
138            quantization: Some(value),
139        }
140    }
141}
142
143impl From<ScalarQuantization> for quantization_config::Quantization {
144    fn from(value: ScalarQuantization) -> Self {
145        Self::Scalar(value)
146    }
147}
148
149impl From<ProductQuantization> for quantization_config::Quantization {
150    fn from(value: ProductQuantization) -> Self {
151        Self::Product(value)
152    }
153}
154
155impl From<BinaryQuantization> for quantization_config::Quantization {
156    fn from(value: BinaryQuantization) -> Self {
157        Self::Binary(value)
158    }
159}
160
161impl From<TurboQuantization> for quantization_config::Quantization {
162    fn from(value: TurboQuantization) -> Self {
163        Self::Turboquant(value)
164    }
165}
166
167impl From<quantization_config_diff::Quantization> for QuantizationConfigDiff {
168    fn from(value: quantization_config_diff::Quantization) -> Self {
169        Self {
170            quantization: Some(value),
171        }
172    }
173}
174
175impl From<ScalarQuantization> for quantization_config_diff::Quantization {
176    fn from(value: ScalarQuantization) -> Self {
177        Self::Scalar(value)
178    }
179}
180
181impl From<ProductQuantization> for quantization_config_diff::Quantization {
182    fn from(value: ProductQuantization) -> Self {
183        Self::Product(value)
184    }
185}
186
187impl From<Disabled> for quantization_config_diff::Quantization {
188    fn from(value: Disabled) -> Self {
189        Self::Disabled(value)
190    }
191}
192
193impl From<BinaryQuantization> for quantization_config_diff::Quantization {
194    fn from(value: BinaryQuantization) -> Self {
195        Self::Binary(value)
196    }
197}
198
199impl From<TurboQuantization> for quantization_config_diff::Quantization {
200    fn from(value: TurboQuantization) -> Self {
201        Self::Turboquant(value)
202    }
203}
204
205impl From<DenseVectorCreationConfig> for create_vector_name_request::VectorConfig {
206    fn from(value: DenseVectorCreationConfig) -> Self {
207        Self::DenseConfig(value)
208    }
209}
210
211impl From<SparseVectorCreationConfig> for create_vector_name_request::VectorConfig {
212    fn from(value: SparseVectorCreationConfig) -> Self {
213        Self::SparseConfig(value)
214    }
215}
216
217impl From<DenseVectorCreationConfigBuilder> for create_vector_name_request::VectorConfig {
218    fn from(value: DenseVectorCreationConfigBuilder) -> Self {
219        Self::DenseConfig(value.build())
220    }
221}
222
223impl From<SparseVectorCreationConfigBuilder> for create_vector_name_request::VectorConfig {
224    fn from(value: SparseVectorCreationConfigBuilder) -> Self {
225        Self::SparseConfig(value.build())
226    }
227}
228
229impl From<alias_operations::Action> for AliasOperations {
230    fn from(value: alias_operations::Action) -> Self {
231        AliasOperations {
232            action: Some(value),
233        }
234    }
235}
236
237impl From<CreateAlias> for alias_operations::Action {
238    fn from(value: CreateAlias) -> Self {
239        Self::CreateAlias(value)
240    }
241}
242
243impl From<RenameAlias> for alias_operations::Action {
244    fn from(value: RenameAlias) -> Self {
245        Self::RenameAlias(value)
246    }
247}
248
249impl From<DeleteAlias> for alias_operations::Action {
250    fn from(value: DeleteAlias) -> Self {
251        Self::DeleteAlias(value)
252    }
253}
254
255impl From<Kind> for Value {
256    fn from(value: Kind) -> Self {
257        Self { kind: Some(value) }
258    }
259}
260
261impl From<Vec<Value>> for ListValue {
262    fn from(value: Vec<Value>) -> Self {
263        Self { values: value }
264    }
265}
266
267impl From<read_consistency::Value> for ReadConsistency {
268    fn from(value: read_consistency::Value) -> Self {
269        Self { value: Some(value) }
270    }
271}
272
273impl From<PointIdOptions> for PointId {
274    fn from(value: PointIdOptions) -> Self {
275        Self {
276            point_id_options: Some(value),
277        }
278    }
279}
280
281impl From<with_payload_selector::SelectorOptions> for WithPayloadSelector {
282    fn from(value: with_payload_selector::SelectorOptions) -> Self {
283        Self {
284            selector_options: Some(value),
285        }
286    }
287}
288
289impl From<PayloadIncludeSelector> for with_payload_selector::SelectorOptions {
290    fn from(value: PayloadIncludeSelector) -> Self {
291        Self::Include(value)
292    }
293}
294
295impl From<PayloadExcludeSelector> for with_payload_selector::SelectorOptions {
296    fn from(value: PayloadExcludeSelector) -> Self {
297        Self::Exclude(value)
298    }
299}
300
301impl From<with_vectors_selector::SelectorOptions> for WithVectorsSelector {
302    fn from(value: with_vectors_selector::SelectorOptions) -> Self {
303        Self {
304            selector_options: Some(value),
305        }
306    }
307}
308
309impl From<VectorsSelector> for with_vectors_selector::SelectorOptions {
310    fn from(value: VectorsSelector) -> Self {
311        Self::Include(value)
312    }
313}
314
315impl From<start_from::Value> for StartFrom {
316    fn from(value: start_from::Value) -> Self {
317        Self { value: Some(value) }
318    }
319}
320
321impl From<target_vector::Target> for TargetVector {
322    fn from(value: target_vector::Target) -> Self {
323        Self {
324            target: Some(value),
325        }
326    }
327}
328
329impl From<VectorExample> for target_vector::Target {
330    fn from(value: VectorExample) -> Self {
331        Self::Single(value)
332    }
333}
334
335impl From<vector_example::Example> for VectorExample {
336    fn from(value: vector_example::Example) -> Self {
337        Self {
338            example: Some(value),
339        }
340    }
341}
342
343impl From<PointId> for vector_example::Example {
344    fn from(value: PointId) -> Self {
345        Self::Id(value)
346    }
347}
348
349impl From<Vector> for vector_example::Example {
350    fn from(value: Vector) -> Self {
351        Self::Vector(value)
352    }
353}
354
355impl From<points_update_operation::Operation> for PointsUpdateOperation {
356    fn from(value: points_update_operation::Operation) -> Self {
357        Self {
358            operation: Some(value),
359        }
360    }
361}
362
363impl From<group_id::Kind> for GroupId {
364    fn from(value: group_id::Kind) -> Self {
365        Self { kind: Some(value) }
366    }
367}
368
369impl From<condition::ConditionOneOf> for Condition {
370    fn from(value: condition::ConditionOneOf) -> Self {
371        Self {
372            condition_one_of: Some(value),
373        }
374    }
375}
376
377impl From<FieldCondition> for condition::ConditionOneOf {
378    fn from(value: FieldCondition) -> Self {
379        Self::Field(value)
380    }
381}
382
383impl From<IsEmptyCondition> for condition::ConditionOneOf {
384    fn from(value: IsEmptyCondition) -> Self {
385        Self::IsEmpty(value)
386    }
387}
388
389impl From<HasIdCondition> for condition::ConditionOneOf {
390    fn from(value: HasIdCondition) -> Self {
391        Self::HasId(value)
392    }
393}
394
395impl From<Filter> for condition::ConditionOneOf {
396    fn from(value: Filter) -> Self {
397        Self::Filter(value)
398    }
399}
400
401impl From<IsNullCondition> for condition::ConditionOneOf {
402    fn from(value: IsNullCondition) -> Self {
403        Self::IsNull(value)
404    }
405}
406
407impl From<NestedCondition> for condition::ConditionOneOf {
408    fn from(value: NestedCondition) -> Self {
409        Self::Nested(value)
410    }
411}
412
413impl From<Vec<PointId>> for HasIdCondition {
414    fn from(value: Vec<PointId>) -> Self {
415        Self { has_id: value }
416    }
417}
418
419impl From<r#match::MatchValue> for Match {
420    fn from(value: r#match::MatchValue) -> Self {
421        Self {
422            match_value: Some(value),
423        }
424    }
425}
426
427impl From<Vec<GeoPoint>> for GeoLineString {
428    fn from(value: Vec<GeoPoint>) -> Self {
429        Self { points: value }
430    }
431}
432
433impl From<PointsSelectorOneOf> for PointsSelector {
434    fn from(value: PointsSelectorOneOf) -> Self {
435        Self {
436            points_selector_one_of: Some(value),
437        }
438    }
439}
440
441impl From<Filter> for PointsSelectorOneOf {
442    fn from(value: Filter) -> Self {
443        Self::Filter(value)
444    }
445}
446
447impl<I: Into<PointId>, const N: usize> From<[I; N]> for PointsIdsList {
448    fn from(value: [I; N]) -> Self {
449        let ids: Vec<_> = value.into_iter().map(|i| i.into()).collect();
450        Self { ids }
451    }
452}
453
454impl<I: Into<PointId>> From<Vec<I>> for PointsIdsList {
455    fn from(value: Vec<I>) -> Self {
456        let ids: Vec<_> = value.into_iter().map(|i| i.into()).collect();
457        Self { ids }
458    }
459}
460
461impl<I: Into<PointsIdsList>> From<I> for PointsSelectorOneOf {
462    fn from(value: I) -> Self {
463        Self::Points(value.into())
464    }
465}
466
467impl From<VectorParamsDiffBuilder> for vectors_config_diff::Config {
468    fn from(value: VectorParamsDiffBuilder) -> Self {
469        value.build().into()
470    }
471}
472
473impl From<VectorParamsBuilder> for vectors_config::Config {
474    fn from(value: VectorParamsBuilder) -> Self {
475        value.build().into()
476    }
477}
478
479impl From<ScalarQuantizationBuilder> for quantization_config_diff::Quantization {
480    fn from(value: ScalarQuantizationBuilder) -> Self {
481        Self::Scalar(value.build())
482    }
483}
484
485impl From<ProductQuantizationBuilder> for quantization_config_diff::Quantization {
486    fn from(value: ProductQuantizationBuilder) -> Self {
487        Self::Product(value.build())
488    }
489}
490
491impl From<BinaryQuantizationBuilder> for quantization_config_diff::Quantization {
492    fn from(value: BinaryQuantizationBuilder) -> Self {
493        Self::Binary(value.build())
494    }
495}
496
497impl From<TurboQuantizationBuilder> for quantization_config_diff::Quantization {
498    fn from(value: TurboQuantizationBuilder) -> Self {
499        Self::Turboquant(value.build())
500    }
501}
502
503impl From<ScalarQuantizationBuilder> for quantization_config::Quantization {
504    fn from(value: ScalarQuantizationBuilder) -> Self {
505        Self::Scalar(value.build())
506    }
507}
508
509impl From<ProductQuantizationBuilder> for quantization_config::Quantization {
510    fn from(value: ProductQuantizationBuilder) -> Self {
511        Self::Product(value.build())
512    }
513}
514
515impl From<BinaryQuantizationBuilder> for quantization_config::Quantization {
516    fn from(value: BinaryQuantizationBuilder) -> Self {
517        Self::Binary(value.build())
518    }
519}
520
521impl From<TurboQuantizationBuilder> for quantization_config::Quantization {
522    fn from(value: TurboQuantizationBuilder) -> Self {
523        Self::Turboquant(value.build())
524    }
525}
526
527impl From<points_update_operation::PointStructList> for points_update_operation::Operation {
528    fn from(value: points_update_operation::PointStructList) -> Self {
529        Self::Upsert(value)
530    }
531}
532
533impl From<points_update_operation::SetPayload> for points_update_operation::Operation {
534    fn from(value: points_update_operation::SetPayload) -> Self {
535        Self::SetPayload(value)
536    }
537}
538
539impl From<points_update_operation::OverwritePayload> for points_update_operation::Operation {
540    fn from(value: points_update_operation::OverwritePayload) -> Self {
541        Self::OverwritePayload(value)
542    }
543}
544
545impl From<points_update_operation::DeletePayload> for points_update_operation::Operation {
546    fn from(value: points_update_operation::DeletePayload) -> Self {
547        Self::DeletePayload(value)
548    }
549}
550
551impl From<points_update_operation::UpdateVectors> for points_update_operation::Operation {
552    fn from(value: points_update_operation::UpdateVectors) -> Self {
553        Self::UpdateVectors(value)
554    }
555}
556
557impl From<points_update_operation::DeleteVectors> for points_update_operation::Operation {
558    fn from(value: points_update_operation::DeleteVectors) -> Self {
559        Self::DeleteVectors(value)
560    }
561}
562
563impl From<points_update_operation::DeletePoints> for points_update_operation::Operation {
564    fn from(value: points_update_operation::DeletePoints) -> Self {
565        Self::DeletePoints(value)
566    }
567}
568
569impl From<points_update_operation::ClearPayload> for points_update_operation::Operation {
570    fn from(value: points_update_operation::ClearPayload) -> Self {
571        Self::ClearPayload(value)
572    }
573}
574
575impl From<MoveShard> for update_collection_cluster_setup_request::Operation {
576    fn from(value: MoveShard) -> Self {
577        Self::MoveShard(value)
578    }
579}
580
581impl From<MoveShardBuilder> for update_collection_cluster_setup_request::Operation {
582    fn from(value: MoveShardBuilder) -> Self {
583        Self::MoveShard(value.build())
584    }
585}
586
587impl From<ReplicateShard> for update_collection_cluster_setup_request::Operation {
588    fn from(value: ReplicateShard) -> Self {
589        Self::ReplicateShard(value)
590    }
591}
592
593impl From<ReplicateShardBuilder> for update_collection_cluster_setup_request::Operation {
594    fn from(value: ReplicateShardBuilder) -> Self {
595        Self::ReplicateShard(value.build())
596    }
597}
598
599impl From<AbortShardTransfer> for update_collection_cluster_setup_request::Operation {
600    fn from(value: AbortShardTransfer) -> Self {
601        Self::AbortTransfer(value)
602    }
603}
604
605impl From<AbortShardTransferBuilder> for update_collection_cluster_setup_request::Operation {
606    fn from(value: AbortShardTransferBuilder) -> Self {
607        Self::AbortTransfer(value.build())
608    }
609}
610
611impl From<Replica> for update_collection_cluster_setup_request::Operation {
612    fn from(value: Replica) -> Self {
613        Self::DropReplica(value)
614    }
615}
616
617impl From<CreateShardKey> for update_collection_cluster_setup_request::Operation {
618    fn from(value: CreateShardKey) -> Self {
619        Self::CreateShardKey(value)
620    }
621}
622
623impl From<DeleteShardKey> for update_collection_cluster_setup_request::Operation {
624    fn from(value: DeleteShardKey) -> Self {
625        Self::DeleteShardKey(value)
626    }
627}
628
629impl From<RestartTransfer> for update_collection_cluster_setup_request::Operation {
630    fn from(value: RestartTransfer) -> Self {
631        Self::RestartTransfer(value)
632    }
633}