oximod 0.2.5

MongoDB ODM for Rust inspired by Mongoose
Documentation
//! Delete example for oximod
//!
//! Run with: `cargo run --example delete`
//!
//! This demonstrates how to:
//! - Insert users
//! - Delete multiple documents (raw MongoDB collection)
//! - Delete one document with a filter (raw MongoDB collection)
//! - Delete a document by ID using `Model::delete_by_id`

use mongodb::bson::{doc, oid::ObjectId};
use oximod::{Model, OxiClient};
use serde::{Deserialize, Serialize};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    dotenv::dotenv().ok();
    let mongodb_uri = std::env::var("MONGODB_URI")?;
    OxiClient::init_global(mongodb_uri).await?;

    #[derive(Debug, Serialize, Deserialize, Model)]
    #[db("delete_example_db")]
    #[collection("users")]
    struct User {
        #[serde(skip_serializing_if = "Option::is_none")]
        _id: Option<ObjectId>,
        name: String,
        age: i32,
        #[default(true)]
        active: bool,
    }

    // Clean up previous runs
    User::clear().await?;

    // Insert users using builder API
    let users = vec![
        User::new().name("User1").age(20).active(false),
        User::new().name("User2").age(25).active(false),
        User::new().name("User3").age(30),
        User::new().name("User4").age(30),
    ];

    let mut inserted_ids = vec![];
    for user in users {
        let id = user.save().await?;
        inserted_ids.push(id);
    }

    // Access raw MongoDB collection (full control)
    let collection = User::get_collection()?;

    // Delete all inactive users (raw MongoDB API)
    let result = collection.delete_many(doc! { "active": false }).await?;
    println!("๐Ÿ—‘๏ธ Deleted {} inactive users", result.deleted_count);

    // Delete one active user (raw MongoDB API)
    let result = collection.delete_one(doc! { "active": true }).await?;
    println!("๐Ÿงน Deleted {} active user(s)", result.deleted_count);

    // Delete by ID using OxiMod helper
    if let Some(id) = inserted_ids.pop() {
        let result = User::delete_by_id(id).await?;
        println!(
            "โŒ Deleted by ID using Model::delete_by_id โ†’ {}",
            result.deleted_count
        );
    }

    Ok(())
}