2022-07-21 12:18:25 +02:00
|
|
|
use crate::models::{Meme, MemeOptions, User};
|
|
|
|
use serde::{Deserialize, Serialize};
|
2022-07-19 21:11:13 +02:00
|
|
|
|
|
|
|
#[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,
|
|
|
|
}
|
|
|
|
|
2022-07-21 12:18:25 +02:00
|
|
|
#[derive(Deserialize)]
|
|
|
|
pub struct MemeFilterQuery {
|
|
|
|
pub category: Option<String>,
|
|
|
|
pub user: Option<String>,
|
|
|
|
pub search: Option<String>,
|
|
|
|
pub limit: Option<i32>,
|
|
|
|
pub after: Option<i32>,
|
|
|
|
}
|
|
|
|
|
2022-07-19 21:11:13 +02:00
|
|
|
#[derive(Serialize)]
|
|
|
|
pub struct CDNEntry {
|
|
|
|
pub directories: Vec<String>,
|
|
|
|
pub files: Vec<String>,
|
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Serialize)]
|
|
|
|
pub struct CDNFile {
|
|
|
|
pub cid: String,
|
|
|
|
pub filename: String,
|
|
|
|
}
|
|
|
|
|
|
|
|
impl From<Meme> 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<User> for V2User {
|
|
|
|
fn from(user: User) -> Self {
|
|
|
|
Self {
|
|
|
|
id: user.id,
|
|
|
|
name: user.name,
|
|
|
|
dayuploads: user.dayuploads,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2022-07-21 12:18:25 +02:00
|
|
|
|
|
|
|
impl From<MemeFilterQuery> 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,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|