feat: Implement advanced filtering with new filter conditions and a strategy-based query builder.
This commit is contained in:
@@ -59,6 +59,7 @@ pub struct SortParams {
|
||||
pub struct FilterParams {
|
||||
pub mime_type: Option<String>,
|
||||
pub metadata_filters: Option<Vec<MetadataFilter>>,
|
||||
pub conditions: Option<Vec<FilterCondition>>,
|
||||
// In the future, we can add fields like:
|
||||
// pub date_range: Option<(chrono::DateTime<chrono::Utc>, chrono::DateTime<chrono::Utc>)>,
|
||||
}
|
||||
@@ -82,6 +83,24 @@ pub struct MetadataFilter {
|
||||
pub tag_value: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct FilterCondition {
|
||||
pub field: String,
|
||||
pub operator: FilterOperator,
|
||||
pub value: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq)]
|
||||
pub enum FilterOperator {
|
||||
Eq,
|
||||
Neq,
|
||||
Like,
|
||||
Gt,
|
||||
Lt,
|
||||
Gte,
|
||||
Lte,
|
||||
}
|
||||
|
||||
pub struct MediaImportBundle {
|
||||
pub media_model: Media,
|
||||
pub metadata_models: Vec<MediaMetadata>,
|
||||
|
||||
Reference in New Issue
Block a user