| Crates.io | manor |
| lib.rs | manor |
| version | 0.2.5 |
| created_at | 2025-03-16 02:16:23.889975+00 |
| updated_at | 2025-03-23 19:09:57.835558+00 |
| description | An ORM for MongoDB |
| homepage | https://github.com/dax-dot-gay/manor |
| repository | https://github.com/dax-dot-gay/manor |
| max_upload_size | |
| id | 1594055 |
| size | 63,001 |
manor - MongoDB for Rust, Simplified
A highly-automated MongoDB ORM, extending on the mongodb crate to bring tighter GridFS integration, cross-document linking, and extremely low-code schema specification.
Note: Currently not tested exhaustively, and likely not ready for production. Still under active development.
cargo add manor
A (very) brief example of this crate's usage is as follows:
use manor::{schema, Client, Collection};
use uuid::Uuid;
// Set up a schema, defines [User] and [UserBuilder]
#[schema(collection = "users")]
pub struct User {
#[field(id = Uuid::new_v4)]
pub id: Uuid,
pub username: String,
pub password: String
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Initialize a client and assign it to the global instance
Client::connect_with_uri("mongodb://...", "my_app")?.as_global();
let user = UserBuilder::default().username("alice").password("bob").build()?;
user.save().await?;
let users = Collection::<User>::new();
for user in users.find_many(bson::doc! {}).await {
println!("{user:?}");
}
Ok(())
}