avocado icon indicating copy to clipboard operation
avocado copied to clipboard

Statically typed filters?

Open 8176135 opened this issue 5 years ago • 1 comments

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"));

8176135 avatar Jul 27 '19 05:07 8176135

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.

H2CO3 avatar Jul 27 '19 07:07 H2CO3