use serde::{Deserialize, Serialize}; use sqlx::{FromRow}; #[derive(Debug, Serialize, Deserialize)] pub struct PageResult { pub total: i64, pub list: Vec, pub page: i32, pub page_size: i32, } #[derive(Debug, Serialize, Deserialize)] pub struct ApiResponse { success: bool, code: i32, msg: String, data: Option, } impl ApiResponse { // 成功响应 pub fn success(data: T) -> Self { Self { success: true, code: 0, msg: "操作成功".to_string(), data: Some(data), } } // 成功响应,数据为空 pub fn success_empty() -> ApiResponse<()> { ApiResponse { success: true, code: 0, msg: "操作成功".to_string(), data: None, } } // 错误响应 pub fn error(code: i32, message: &str) -> Self { Self { success: false, code, msg: message.to_string(), data: None, } } } #[derive(Debug, Serialize, Deserialize, FromRow)] pub struct Books { pub id: i64, pub title: String, pub author: String, pub cover: String, pub file_path: String, pub total_chapters: i32, pub total_chars: i32, pub introduction: String, pub create_time: chrono::NaiveDateTime, pub last_read_chapter_id: i64, pub last_read_position: i32, pub last_read_time: Option, } #[derive(Debug, FromRow, Serialize, Deserialize, Clone)] pub struct Chapters { pub id: i64, pub book_id: i64, pub number: i32, pub title: String, pub content: String, pub total_chars: i32, }