feat(core/models): basic implementation of User and File models

This commit is contained in:
Paul Makles
2023-04-23 17:44:36 +01:00
parent e6d0d44c5a
commit f8c8407af3
10 changed files with 387 additions and 50 deletions

View File

@@ -1,18 +1,7 @@
use revolt_database::{util::reference::Reference, Database};
use revolt_models::Bot;
use revolt_quark::{models::User, Db, Error, Result};
use revolt_models::FetchBotResponse;
use revolt_quark::{models::User, Error, Result};
use rocket::{serde::json::Json, State};
use serde::Serialize;
/// # Bot Response
/// TODO: move to revolt-models
#[derive(Serialize, JsonSchema)]
pub struct BotResponse {
/// Bot object
bot: Bot,
/// User object
user: User,
}
/// # Fetch Bot
///
@@ -20,11 +9,10 @@ pub struct BotResponse {
#[openapi(tag = "Bots")]
#[get("/<bot>")]
pub async fn fetch_bot(
legacy_db: &Db,
db: &State<Database>,
user: User,
bot: Reference,
) -> Result<Json<BotResponse>> {
) -> Result<Json<FetchBotResponse>> {
if user.bot.is_some() {
return Err(Error::IsBot);
}
@@ -34,8 +22,12 @@ pub async fn fetch_bot(
return Err(Error::NotFound);
}
Ok(Json(BotResponse {
user: legacy_db.fetch_user(&bot.id).await?.foreign(),
Ok(Json(FetchBotResponse {
user: revolt_models::User::from(
db.fetch_user(&bot.id).await.map_err(Error::from_core)?,
None,
)
.await,
bot: bot.into(),
}))
}

View File

@@ -1,6 +1,6 @@
use revolt_database::Database;
use revolt_models::PublicBot;
use revolt_quark::{models::User, Db, Error, Ref, Result};
use revolt_quark::{models::User, Error, Ref, Result};
use rocket::serde::json::Json;
use rocket::State;
@@ -11,7 +11,6 @@ use rocket::State;
#[openapi(tag = "Bots")]
#[get("/<target>/invite")]
pub async fn fetch_public_bot(
legacy_db: &Db,
db: &State<Database>,
user: Option<User>,
target: Ref,
@@ -21,12 +20,6 @@ pub async fn fetch_public_bot(
return Err(Error::NotFound);
}
let user = legacy_db.fetch_user(&bot.id).await?;
Ok(Json(PublicBot::from(
bot,
user.username,
user.avatar.map(|f| f.id),
user.profile.and_then(|p| p.content),
)))
let user = db.fetch_user(&bot.id).await.map_err(Error::from_core)?;
Ok(Json(PublicBot::from(bot, user)))
}