use crate::models::{Meme, MemeOptions, User}; use serde::{Deserialize, Serialize}; #[derive(Serialize)] pub struct V2Meme { pub id: i32, pub filename: String, pub ipfs: String, pub category: String, pub user: String, pub timestamp: i64, } #[derive(Serialize)] pub struct V2User { pub id: String, pub name: String, pub dayuploads: i32, } #[derive(Deserialize)] pub struct MemeFilterQuery { pub category: Option, pub user: Option, pub search: Option, pub limit: Option, pub after: Option, } #[derive(Serialize)] pub struct CDNEntry { pub directories: Vec, pub files: Vec, } #[derive(Serialize)] pub struct CDNFile { pub cid: String, pub filename: String, } impl From for V2Meme { fn from(meme: Meme) -> Self { Self { id: meme.id, filename: meme.filename, category: meme.category, user: meme.userid, timestamp: meme.timestamp, ipfs: meme.ipfs, } } } impl From for V2User { fn from(user: User) -> Self { Self { id: user.id, name: user.name, dayuploads: user.dayuploads, } } } impl From for MemeOptions { fn from(query: MemeFilterQuery) -> Self { Self { category: query.category, user_id: query.user, username: None, search: query.search, limit: query.limit, after: query.after, } } }