Skip to main content

do_memory_mcp/server/audit/
query_ops.rs

1//! Audit logging operations - Query and batch operations
2//!
3//! This module provides logging methods for query and batch operations.
4
5use super::core::AuditLogger;
6use super::types::AuditLogLevel;
7use serde_json::json;
8
9impl AuditLogger {
10    // === Batch Operations ===
11
12    /// Log batch execution
13    pub async fn log_batch_execution(
14        &self,
15        client_id: &str,
16        operation_count: usize,
17        success_count: usize,
18        failure_count: usize,
19        success: bool,
20    ) {
21        let metadata = json!({
22            "operation_count": operation_count,
23            "success_count": success_count,
24            "failure_count": failure_count
25        });
26
27        self.log_event(
28            AuditLogLevel::Info,
29            client_id,
30            "batch_execute",
31            if success { "success" } else { "failure" },
32            metadata,
33        )
34        .await;
35    }
36
37    /// Log bulk episode retrieval
38    pub async fn log_bulk_episodes(&self, client_id: &str, episode_count: usize, success: bool) {
39        let metadata = json!({
40            "episode_count": episode_count
41        });
42
43        self.log_event(
44            AuditLogLevel::Debug,
45            client_id,
46            "bulk_episodes",
47            if success { "success" } else { "failure" },
48            metadata,
49        )
50        .await;
51    }
52
53    // === Memory Query Operations ===
54
55    /// Log memory query
56    pub async fn log_memory_query(
57        &self,
58        client_id: &str,
59        query: &str,
60        result_count: usize,
61        success: bool,
62    ) {
63        let metadata = json!({
64            "query": query,
65            "result_count": result_count
66        });
67
68        self.log_event(
69            AuditLogLevel::Debug,
70            client_id,
71            "query_memory",
72            if success { "success" } else { "failure" },
73            metadata,
74        )
75        .await;
76    }
77
78    /// Log semantic memory query
79    pub async fn log_semantic_query(
80        &self,
81        client_id: &str,
82        query: &str,
83        result_count: usize,
84        success: bool,
85    ) {
86        let metadata = json!({
87            "query": query,
88            "result_count": result_count
89        });
90
91        self.log_event(
92            AuditLogLevel::Debug,
93            client_id,
94            "query_semantic_memory",
95            if success { "success" } else { "failure" },
96            metadata,
97        )
98        .await;
99    }
100}