// TODO: remove on implementation
#![allow(unused_imports)]
#![allow(unused_variables)]
#![allow(dead_code)]


use crate::model::*;

pub struct Query {
    filters: Vec<QueryFilterModifier>,
}

pub type QueryParserResult = Result<Query, QuerySyntaxError>;
pub enum QuerySyntaxError {
    UnknownFilter,
}

impl Query {
    pub fn parse(input: &[String]) -> QueryParserResult {
        unimplemented!()
    }
}

pub fn search(input: &[Texture], query: &Query) -> Vec<Texture> {
    unimplemented!()
}

enum QueryFilterModifier {
    None(QueryFilter),
    Not(QueryFilter),
}

enum QueryFilter {
    TagName(String),
    InName(String),
    MinResolution(usize),
    BeforeDate { year: u16, month: u16, day: u16 },
}
