Skip to main content

cognee_database/
types.rs

1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3use thiserror::Error;
4use uuid::Uuid;
5
6#[derive(Debug, Clone, Error)]
7pub enum DatabaseError {
8    #[error("Not found: {0}")]
9    NotFound(String),
10
11    #[error("Connection error: {0}")]
12    ConnectionError(String),
13
14    #[error("Query error: {0}")]
15    QueryError(String),
16
17    #[error("Unique violation: {0}")]
18    UniqueViolation(String),
19}
20
21#[derive(Debug, Clone, Serialize, Deserialize)]
22pub struct GraphNode {
23    pub id: Uuid,
24    pub slug: Uuid,
25    pub user_id: Uuid,
26    pub data_id: Uuid,
27    pub dataset_id: Uuid,
28    pub label: Option<String>,
29    pub node_type: String,
30    pub indexed_fields: serde_json::Value,
31    pub attributes: Option<serde_json::Value>,
32    pub created_at: DateTime<Utc>,
33}
34
35#[derive(Debug, Clone, Serialize, Deserialize)]
36pub struct GraphEdge {
37    pub id: Uuid,
38    pub slug: Uuid,
39    pub user_id: Uuid,
40    pub data_id: Uuid,
41    pub dataset_id: Uuid,
42    pub source_node_id: Uuid,
43    pub destination_node_id: Uuid,
44    pub relationship_name: String,
45    pub label: Option<String>,
46    pub attributes: Option<serde_json::Value>,
47    pub created_at: DateTime<Utc>,
48}
49
50#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
51pub enum PipelineRunStatus {
52    Initiated,
53    Started,
54    Completed,
55    Errored,
56}
57
58#[derive(Debug, Clone, Serialize, Deserialize)]
59pub struct PipelineRun {
60    pub id: Uuid,
61    pub created_at: DateTime<Utc>,
62    pub status: PipelineRunStatus,
63    pub pipeline_run_id: Uuid,
64    pub pipeline_name: String,
65    pub pipeline_id: Uuid,
66    pub dataset_id: Option<Uuid>,
67    pub run_info: Option<serde_json::Value>,
68}
69
70#[derive(Debug, Clone, Serialize, Deserialize)]
71pub struct TaskRun {
72    pub id: Uuid,
73    pub task_name: String,
74    pub created_at: DateTime<Utc>,
75    pub status: String,
76    pub run_info: Option<serde_json::Value>,
77}
78
79#[derive(Debug, Clone, Serialize, Deserialize)]
80pub struct GraphMetrics {
81    pub id: Uuid,
82    pub num_tokens: Option<i32>,
83    pub num_nodes: Option<i32>,
84    pub num_edges: Option<i32>,
85    pub mean_degree: Option<f64>,
86    pub edge_density: Option<f64>,
87    pub num_connected_components: Option<i32>,
88    pub sizes_of_connected_components: Option<serde_json::Value>,
89    pub num_selfloops: Option<i32>,
90    pub diameter: Option<i32>,
91    pub avg_shortest_path_length: Option<f64>,
92    pub avg_clustering: Option<f64>,
93    pub created_at: DateTime<Utc>,
94    pub updated_at: Option<DateTime<Utc>>,
95}
96
97#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
98pub enum SearchHistoryEntryType {
99    Query,
100    Result,
101}
102
103#[derive(Debug, Clone, Serialize, Deserialize)]
104pub struct SearchHistoryEntry {
105    pub entry_id: Uuid,
106    pub query_id: Uuid,
107    pub entry_type: SearchHistoryEntryType,
108    pub content: String,
109    pub query_type: Option<String>,
110    pub user_id: Option<Uuid>,
111    pub created_at: DateTime<Utc>,
112}