feat(core/database): add Reference struct

This commit is contained in:
Paul Makles
2023-04-23 14:59:44 +01:00
parent 8a695b4bb5
commit 1933c9ea3d
7 changed files with 67 additions and 6 deletions

View File

@@ -56,7 +56,7 @@ revolt_rocket_okapi = { version = "0.9.1", features = [ "swagger" ] }
revolt-quark = { path = "../quark" }
# core
revolt-database = { path = "../core/database" }
revolt-database = { path = "../core/database", features = [ "rocket-impl" ] }
revolt-models = { path = "../core/models", features = [ "schemas" ] }
[build-dependencies]

View File

@@ -1,6 +1,6 @@
use revolt_database::Database;
use revolt_database::{util::reference::Reference, Database};
use revolt_models::Bot;
use revolt_quark::{models::User, Db, Error, Ref, Result};
use revolt_quark::{models::User, Db, Error, Result};
use rocket::{serde::json::Json, State};
use serde::Serialize;
@@ -18,18 +18,18 @@ pub struct BotResponse {
///
/// Fetch details of a bot you own by its id.
#[openapi(tag = "Bots")]
#[get("/<target>")]
#[get("/<bot>")]
pub async fn fetch_bot(
legacy_db: &Db,
db: &State<Database>,
user: User,
target: Ref,
bot: Reference,
) -> Result<Json<BotResponse>> {
if user.bot.is_some() {
return Err(Error::IsBot);
}
let bot = db.fetch_bot(&target.id).await.map_err(Error::from_core)?;
let bot = bot.as_bot(db).await.map_err(Error::from_core)?;
if bot.owner != user.id {
return Err(Error::NotFound);
}