pub mod query_date_time;
pub mod query_feeds;
pub mod query_kline;
pub mod query_owner;
pub mod query_projects;
pub mod query_users;
use async_graphql::Context;
use async_graphql::Error;
use async_graphql::MergedObject;
use crate::core::auth0::Requestor;
use crate::core::auth0::UserDetails;
use query_date_time::QueryDateTime;
use query_feeds::QueryFeeds;
use query_kline::QueryKline;
use query_owner::QueryOwner;
use query_projects::QueryProject;
use query_users::QueryUsers;
#[derive(MergedObject, Default)]
pub struct Query(
QueryDateTime,
QueryProject,
QueryOwner,
QueryKline,
QueryFeeds,
QueryUsers,
);
pub fn required_auth(ctx: &Context<'_>) -> async_graphql::Result<UserDetails> {
match ctx.data::<Requestor>()? {
Requestor::Anonymous(_) => Err(Error::new("401".to_string())),
Requestor::LoginUser(user_detail) => Ok(user_detail.clone()),
Requestor::JwtUser(user_detail) => Ok(user_detail.clone()),
Requestor::InnerService(_) => todo!(),
}
}
pub fn get_user_id(ctx: &Context<'_>) -> Option<String> {
match ctx.data::<Requestor>() {
Ok(Requestor::Anonymous(_)) => None,
Ok(Requestor::LoginUser(user_detail)) => Some(user_detail.user_id.to_owned()),
Ok(Requestor::JwtUser(user_detail)) => Some(user_detail.user_id.to_owned()),
Ok(Requestor::InnerService(_)) => todo!(),
Err(_) => None,
}
}