feat: Implement advanced filtering with new filter conditions and a strategy-based query builder.

This commit is contained in:
2025-12-03 23:39:47 +01:00
parent 15177f218b
commit 333c180b17
9 changed files with 481 additions and 74 deletions

View File

@@ -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>,