use rb::{ errors::{RbOption, RbResult}, guards::Admin, }; use rb_blog::db; use rocket::serde::json::Json; use uuid::Uuid; use crate::RbDbConn; #[get("/?&", rank = 1)] pub async fn get(conn: RbDbConn, offset: u32, limit: u32) -> RbResult>> { Ok(Json( conn.run(move |c| db::versions::get(c, offset, limit)) .await?, )) } #[get("/?&&", rank = 0)] pub async fn get_for_post( conn: RbDbConn, post_id: Uuid, offset: u32, limit: u32, ) -> RbResult>> { Ok(Json( conn.run(move |c| db::versions::get_for_post(c, &post_id, offset, limit)) .await?, )) } #[post("/", data = "")] pub async fn create( _admin: Admin, conn: RbDbConn, new: Json, ) -> RbResult> { Ok(Json( conn.run(move |c| db::versions::create(c, &new.into_inner())) .await?, )) } #[get("/")] pub async fn find(conn: RbDbConn, id: uuid::Uuid) -> RbOption> { Ok(conn .run(move |c| db::versions::find(c, &id)) .await? .and_then(|p| Some(Json(p)))) } #[patch("/", data = "")] pub async fn patch( _admin: Admin, conn: RbDbConn, id: uuid::Uuid, patch: Json, ) -> RbResult> { Ok(Json( conn.run(move |c| db::versions::update(c, &id, &patch.into_inner())) .await?, )) } #[delete("/")] pub async fn delete(_admin: Admin, conn: RbDbConn, id: uuid::Uuid) -> RbResult<()> { Ok(conn.run(move |c| db::versions::delete(c, &id)).await?) }