use chrono::{DateTime, Utc}; use diesel::prelude::*; use serde::{Deserialize, Serialize}; use uuid::Uuid; #[derive(Debug, Clone, Serialize, Deserialize)] pub struct Document { pub id: String, pub title: String, pub content: String, pub owner_id: String, pub storage_path: String, pub created_at: DateTime, pub updated_at: DateTime, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct DocumentMetadata { pub id: String, pub title: String, pub owner_id: String, pub created_at: DateTime, pub updated_at: DateTime, pub word_count: usize, pub storage_type: String, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct SearchQuery { pub q: Option, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct SaveRequest { pub id: Option, pub title: Option, pub content: Option, pub save_as_named: Option, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct AiRequest { #[serde(rename = "selected-text")] pub selected_text: Option, pub prompt: Option, #[serde(rename = "translate-lang")] pub translate_lang: Option, pub document_id: Option, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct ExportQuery { pub id: Option, } #[derive(Debug, QueryableByName)] #[diesel(check_for_backend(diesel::pg::Pg))] pub struct UserRow { #[diesel(sql_type = diesel::sql_types::Uuid)] pub id: Uuid, #[diesel(sql_type = diesel::sql_types::Text)] pub email: String, #[diesel(sql_type = diesel::sql_types::Text)] pub username: String, } #[derive(Debug, QueryableByName)] #[diesel(check_for_backend(diesel::pg::Pg))] pub struct UserIdRow { #[diesel(sql_type = diesel::sql_types::Uuid)] pub user_id: Uuid, }