avocado
avocado copied to clipboard
Statically typed filters?
Is it possible to write statically typed filters? (e.g. similar to what diesel
has or something else), and if not, is there any plans for them?
Something like:
#[derive(Debug, Serialize, Deserialize, Doc, Clone)]
pub struct Example {
#[serde(rename = "_id")]
pub id: Uid<Example>,
pub description: String,
}
...
let example_col: Collection<Example> = shared.db.existing_collection();
let res: Example = example_col.find_one(Example::description.eq("abc"));
Hey there!
Unfortunately there's currently nothing like this in Avocado. However, this is certainly something I have thought about, except that I'm not sure how I would go about implementing it.
I'm guessing that a new derive
macro could pre-generate helper types for most of the MongoDB DSL (i.e. query and update operators) based on top-level field names and types, but it might become tricky to refer to subfields.
I'd also really like to solve this problem because it would bring a whole new set of static guarantees to Avocado.