cognee_database/traits/
search_db.rs1use async_trait::async_trait;
2use sea_orm::DatabaseConnection;
3use uuid::Uuid;
4
5use crate::ops::search_history;
6use crate::types::{DatabaseError, SearchHistoryEntry};
7
8#[async_trait]
9pub trait SearchHistoryDb: Send + Sync {
10 async fn log_query(
11 &self,
12 query_text: &str,
13 query_type: &str,
14 user_id: Option<Uuid>,
15 ) -> Result<Uuid, DatabaseError>;
16
17 async fn log_result(
18 &self,
19 query_id: Uuid,
20 serialized_result: &str,
21 user_id: Option<Uuid>,
22 ) -> Result<Uuid, DatabaseError>;
23
24 async fn get_history(
25 &self,
26 user_id: Option<Uuid>,
27 limit: Option<usize>,
28 ) -> Result<Vec<SearchHistoryEntry>, DatabaseError>;
29}
30
31#[async_trait]
32impl SearchHistoryDb for DatabaseConnection {
33 async fn log_query(
34 &self,
35 query_text: &str,
36 query_type: &str,
37 user_id: Option<Uuid>,
38 ) -> Result<Uuid, DatabaseError> {
39 search_history::log_query(self, query_text, query_type, user_id).await
40 }
41
42 async fn log_result(
43 &self,
44 query_id: Uuid,
45 serialized_result: &str,
46 user_id: Option<Uuid>,
47 ) -> Result<Uuid, DatabaseError> {
48 search_history::log_result(self, query_id, serialized_result, user_id).await
49 }
50
51 async fn get_history(
52 &self,
53 user_id: Option<Uuid>,
54 limit: Option<usize>,
55 ) -> Result<Vec<SearchHistoryEntry>, DatabaseError> {
56 search_history::get_history(self, user_id, limit).await
57 }
58}