use crate::models::audit_log::{AuditEventType, AuditLog, AuditLogRepository}; use anyhow::Result; use mongodb::bson::oid::ObjectId; #[derive(Clone)] pub struct AuditLogger { repository: AuditLogRepository, } impl AuditLogger { pub fn new(db: &mongodb::Database) -> Self { Self { repository: AuditLogRepository::new(db), } } pub async fn log_event( &self, event_type: AuditEventType, user_id: Option, email: Option, ip_address: String, resource_type: Option, resource_id: Option, ) -> Result { self.repository .log( event_type, user_id, email, ip_address, resource_type, resource_id, ) .await } pub async fn get_user_audit_logs(&self, user_id: &ObjectId) -> Result> { self.repository.find_by_user(user_id).await } }