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::{FetchProject, Project};

use crate::graphql::service;

#[derive(Default)]
pub struct QueryProject;

#[Object(extends)]
impl QueryProject {
    async fn project(
        &self,
        ctx: &Context<'_>,
        input: FetchProject,
    ) -> FieldResult<Option<Project>> {
        // let mongo_client = &ctx.data_unchecked::<crate::core::mongo::MongoClient>();
        let web_ctx = ctx.data_unchecked::<actix_web::web::Data<crate::server::AppContext>>();

        let project = service::single_project(web_ctx.mongo(), &input._id)
            .await
            .unwrap();

        Ok(project)
    }

    async fn get_projects(&self, ctx: &Context<'_>) -> FieldResult<Vec<Project>> {
        // let mongo_client = &ctx.data_unchecked::<crate::core::mongo::MongoClient>();
        let web_ctx = ctx.data_unchecked::<actix_web::web::Data<crate::server::AppContext>>();

        let projects = service::get_projects(web_ctx.mongo()).await.unwrap();

        Ok(projects)
    }
}