50 lines
1.4 KiB
Rust
50 lines
1.4 KiB
Rust
pub async fn list_pets_handler(owner_id: i32, db_pool: DBPool) -> Result<impl Reply> {
|
|
let pets = db::pet::fetch(&db_pool, owner_id)
|
|
.await
|
|
.map_err(reject::custom)?;
|
|
Ok(json::<Vec<_>>(
|
|
&pets.into_iter().map(PetResponse::of).collect(),
|
|
))
|
|
}
|
|
|
|
pub async fn create_pet_handler(
|
|
owner_id: i32,
|
|
body: PetRequest,
|
|
db_pool: DBPool,
|
|
) -> Result<impl Reply> {
|
|
Ok(json(&PetResponse::of(
|
|
db::pet::create(&db_pool, owner_id, body)
|
|
.await
|
|
.map_err(reject::custom)?,
|
|
)))
|
|
}
|
|
|
|
pub async fn delete_pet_handler(owner_id: i32, id: i32, db_pool: DBPool) -> Result<impl Reply> {
|
|
db::pet::delete(&db_pool, owner_id, id)
|
|
.await
|
|
.map_err(reject::custom)?;
|
|
Ok(StatusCode::OK)
|
|
}
|
|
|
|
pub async fn list_owners_handler(db_pool: DBPool) -> Result<impl Reply> {
|
|
let owners = db::owner::fetch(&db_pool).await.map_err(reject::custom)?;
|
|
Ok(json::<Vec<_>>(
|
|
&owners.into_iter().map(OwnerResponse::of).collect(),
|
|
))
|
|
}
|
|
|
|
pub async fn fetch_owner_handler(id: i32, db_pool: DBPool) -> Result<impl Reply> {
|
|
let owner = db::owner::fetch_one(&db_pool, id)
|
|
.await
|
|
.map_err(reject::custom)?;
|
|
Ok(json(&OwnerResponse::of(owner)))
|
|
}
|
|
|
|
pub async fn create_owner_handler(body: OwnerRequest, db_pool: DBPool) -> Result<impl Reply> {
|
|
Ok(json(&OwnerResponse::of(
|
|
db::owner::create(&db_pool, body)
|
|
.await
|
|
.map_err(reject::custom)?,
|
|
)))
|
|
}
|