Skip to main content

cognee_database/traits/
search_db.rs

1use 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}