chroma_types/execution/
error.rs1use super::operator::ScanToProtoError;
2use crate::{
3 CollectionConversionError, MetadataValueConversionError, SegmentConversionError,
4 VectorConversionError, WhereConversionError,
5};
6use thiserror::Error;
7use tonic::Status;
8
9#[derive(Debug, Error)]
10pub enum QueryConversionError {
11 #[error("Error parsing collection: {0}")]
12 Collection(#[from] CollectionConversionError),
13 #[error("Error decoding field: {0}")]
14 Field(String),
15 #[error("Error parsing metadata: {0}")]
16 Metadata(#[from] MetadataValueConversionError),
17 #[error("Error parsing segment: {0}")]
18 Segment(#[from] SegmentConversionError),
19 #[error("Error parsing vector: {0}")]
20 Vector(#[from] VectorConversionError),
21 #[error("Error parsing where clause: {0}")]
22 Where(#[from] WhereConversionError),
23 #[error("Error parsing scan: {0}")]
24 Scan(#[from] ScanToProtoError),
25 #[error("Validation error: {0}")]
26 Validation(String),
27}
28
29impl QueryConversionError {
30 pub fn field(name: impl ToString) -> Self {
31 Self::Field(name.to_string())
32 }
33
34 pub fn validation(msg: impl ToString) -> Self {
35 Self::Validation(msg.to_string())
36 }
37}
38
39impl From<QueryConversionError> for Status {
40 fn from(value: QueryConversionError) -> Self {
41 Self::invalid_argument(value.to_string())
42 }
43}