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 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 web_ctx = ctx.data_unchecked::<actix_web::web::Data<crate::server::AppContext>>();
let projects = service::get_projects(web_ctx.mongo()).await.unwrap();
Ok(projects)
}
}