chroma_types/execution/
error.rs

1use 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}