use std::collections::HashMap; use serde::{Deserialize, Serialize}; use specta::Type; #[derive(Debug, Clone, Serialize, Deserialize, Type)] pub struct FolderInfo { pub name: String, pub parent_folder_id: Option, } #[derive(Debug, Clone, Serialize, Deserialize, Type)] pub struct ListFoldersResult { pub folders: HashMap, pub session_folder_map: HashMap, } #[derive(Debug, Clone, Serialize, Deserialize, Type)] pub struct ScanResult { pub files: HashMap, pub dirs: Vec, } #[derive(Debug, Clone, Serialize, Deserialize, Type)] #[serde(tag = "type", rename_all = "camelCase")] pub enum CleanupTarget { Files { subdir: String, extension: String, }, Dirs { subdir: String, marker_file: String, }, FilesRecursive { subdir: String, marker_file: String, extension: String, }, } #[derive(Debug, Clone, Serialize, Deserialize, Type)] #[serde(rename_all = "camelCase")] pub struct AttachmentSaveResult { pub path: String, pub attachment_id: String, } #[derive(Debug, Clone, Serialize, Deserialize, Type)] #[serde(rename_all = "camelCase")] pub struct AttachmentInfo { pub attachment_id: String, pub path: String, pub extension: String, pub modified_at: String, } #[derive(Debug, Clone, Serialize, Deserialize, Type)] #[serde(rename_all = "camelCase")] pub struct SessionMetaParticipant { pub id: String, pub user_id: String, pub session_id: String, pub human_id: String, pub source: String, } #[derive(Debug, Clone, Serialize, Deserialize, Type)] #[serde(rename_all = "camelCase")] pub struct SessionMetaData { pub id: String, pub user_id: String, pub created_at: Option, pub title: Option, pub event: Option, pub event_id: Option, #[serde(default)] pub participants: Vec, #[serde(default)] pub tags: Vec, } #[derive(Debug, Clone, Serialize, Deserialize, Type)] #[serde(rename_all = "camelCase")] pub struct TranscriptWord { pub id: Option, pub text: String, pub start_ms: i64, pub end_ms: i64, pub channel: i64, } #[derive(Debug, Clone, Serialize, Deserialize, Type)] #[serde(rename_all = "camelCase")] pub struct TranscriptSpeakerHint { pub id: Option, pub speaker_id: Option, pub start_word_id: String, pub end_word_id: String, } #[derive(Debug, Clone, Serialize, Deserialize, Type)] #[serde(rename_all = "camelCase")] pub struct TranscriptEntry { pub id: String, pub user_id: Option, pub created_at: Option, pub session_id: String, pub started_at: Option, pub ended_at: Option, pub words: Vec, pub speaker_hints: Vec, } #[derive(Debug, Clone, Serialize, Deserialize, Type)] #[serde(rename_all = "camelCase")] pub struct TranscriptData { pub transcripts: Vec, } #[derive(Debug, Clone, Serialize, Deserialize, Type)] #[serde(rename_all = "camelCase")] pub struct SessionNoteData { pub id: String, pub session_id: String, pub template_id: Option, pub position: Option, pub title: Option, pub tiptap_json: serde_json::Value, } #[derive(Debug, Clone, Serialize, Deserialize, Type)] #[serde(rename_all = "camelCase")] pub struct SessionContentData { pub session_id: String, pub meta: Option, pub raw_memo_tiptap_json: Option, pub transcript: Option, pub notes: Vec, }