use reqwest::StatusCode; use serde::{Deserialize, Serialize, Serializer}; fn serialize_status(x: &StatusCode, s: S) -> Result where S: Serializer, { s.serialize_u16(x.as_u16()) } #[derive(Serialize)] pub struct Meme { pub id: String, pub link: String, pub category: String, pub user: String, pub timestamp: String, pub ipfs: String, } #[derive(Serialize)] pub struct Category { pub id: String, pub name: String, } #[derive(Serialize)] pub struct User { pub id: String, pub name: String, pub userdir: String, pub tokenhash: String, pub dayuploads: i32, } //Responses #[derive(Serialize)] pub struct MemesResponse { pub status: i32, pub error: Option, pub memes: Option>, } #[derive(Serialize)] pub struct MemeResponse { pub status: i32, pub error: Option, pub meme: Option, } #[derive(Serialize)] pub struct CategoriesResponse { pub status: i32, pub error: Option, pub categories: Option>, } #[derive(Serialize)] pub struct CategoryResponse { pub status: i32, pub error: Option, pub category: Option, } #[derive(Serialize)] pub struct UsersResponse { pub status: i32, pub error: Option, pub users: Option>, } #[derive(Serialize)] pub struct UserResponse { pub status: i32, pub error: Option, pub user: Option, } #[derive(Serialize)] pub struct UploadResponse { pub status: i32, pub error: Option, pub files: Option>, pub token: String, } #[derive(Serialize)] pub struct ErrorResponse { #[serde(serialize_with = "serialize_status")] pub status: StatusCode, pub error: String, } //Query #[derive(Deserialize)] pub struct IDQuery { pub id: String, } #[derive(Deserialize)] pub struct MemeIDQuery { pub id: i32, } #[derive(Deserialize)] pub struct UserIDQuery { pub id: Option, pub token: Option, pub name: Option, } #[derive(Deserialize)] pub struct MemeFilterQuery { pub category: Option, pub user: Option, pub search: Option, }