praxis_persist/models/
db_thread.rs

1use serde::{Deserialize, Serialize};
2use chrono::{DateTime, Utc};
3
4/// Database-agnostic thread model
5#[derive(Debug, Clone, Serialize, Deserialize)]
6pub struct Thread {
7    pub id: String,
8    pub user_id: String,
9    pub created_at: DateTime<Utc>,
10    pub updated_at: DateTime<Utc>,
11    pub metadata: ThreadMetadata,
12    pub last_summary_update: DateTime<Utc>,
13    pub summary: Option<ThreadSummary>,
14}
15
16#[derive(Debug, Clone, Serialize, Deserialize, Default)]
17pub struct ThreadMetadata {
18    pub title: Option<String>,
19    pub tags: Vec<String>,
20}
21
22#[derive(Debug, Clone, Serialize, Deserialize)]
23pub struct ThreadSummary {
24    pub text: String,
25    pub generated_at: DateTime<Utc>,
26    pub total_tokens_before_summary: usize,
27    pub messages_count: usize,
28}
29