use async_graphql::Context;
use async_graphql::FieldResult;
use async_graphql::Object;
use crate::graphql::schema::{FetchOwner, Owner};
use crate::graphql::service;
#[derive(Default)]
pub struct QueryOwner;
#[Object(extends)]
impl QueryOwner {
async fn owner(&self, ctx: &Context<'_>, input: FetchOwner) -> FieldResult<Option<Owner>> {
let web_ctx = ctx.data_unchecked::<actix_web::web::Data<crate::server::AppContext>>();
let owner = service::single_owner(web_ctx.mongo(), &input._id)
.await
.unwrap();
Ok(owner)
}
async fn get_owners(&self, ctx: &Context<'_>) -> FieldResult<Vec<Owner>> {
let web_ctx = ctx.data_unchecked::<actix_web::web::Data<crate::server::AppContext>>();
let owners = service::get_owners(web_ctx.mongo()).await.unwrap();
Ok(owners)
}
}