Crates.io | nongoose |
lib.rs | nongoose |
version | 0.1.0-beta.1 |
source | src |
created_at | 2022-01-12 18:08:31.844052 |
updated_at | 2022-01-12 18:08:31.844052 |
description | ODM for MongoDB based on Mongoose |
homepage | https://nongoose.danielsolarte.com |
repository | https://github.com/danielsolartech/nongoose |
max_upload_size | |
id | 512930 |
size | 94,983 |
ODM for MongoDB based on Mongoose and written in Rust
use nongoose::{bson::oid::ObjectId, Client, Schema};
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Deserialize, Schema, Serialize)]
struct User {
#[schema(id)]
#[serde(rename = "_id")]
pub id: ObjectId,
#[schema(unique)]
pub username: String,
}
#[tokio::main]
async fn main() {
// Get MongoDB connection.
let client = match Client::with_uri_str("mongodb://localhost:27017").await {
Ok(client) => client,
Err(e) => panic!("Error connecting to the database: {}", e),
};
// Nongoose instance.
let nongoose = nongoose::Nongoose::build(client.database("nextchat"))
.add_schema::<User>()
.finish();
let user = User {
id: ObjectId::new(),
username: String::from("nongoose"),
};
if let Err(error) = user.save().await {
panic!("Cannot create the user: {}", error);
}
println!("User created in the database: {}", user.id);
}
# Sync tests
$ DATABASE_URL=mongodb://localhost:27017 cargo test --no-default-features --features derive,sync
# Async tests (Tokio runtime)
$ DATABASE_URL=mongodb://localhost:27017 cargo test
Check the COPYING file for more information.
Thanks to this amazing people for make Nongoose better:
If you help to Nongoose feel free to add here.