use mongodb::bson::{oid::ObjectId, DateTime};
use oximod::{Model, OxiClient};
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize, Model)]
#[db("hook_example_db")]
#[collection("logs")]
struct Log {
#[serde(skip_serializing_if = "Option::is_none")]
_id: Option<ObjectId>,
message: String,
timestamp: i64,
}
impl Log {
fn print_message(self) -> Self {
println!("📋 Log message: {}", self.message);
self
}
}
#[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?;
Log::clear().await?;
println!("📥 Inserting log entry...");
let log = Log::default()
.message("System started".to_string())
.timestamp(DateTime::now().timestamp_millis())
.print_message()
.save()
.await?;
println!("✅ Saved log with _id: {}", log);
Ok(())
}