zero4rs 2.0.0

zero4rs is a powerful, pragmatic, and extremely fast web framework for Rust
Documentation
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 mongo_client = &ctx.data_unchecked::<crate::core::mongo::MongoClient>();
        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 mongo_client = &ctx.data_unchecked::<crate::core::mongo::MongoClient>();
        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)
    }
}