mod resolvers;
mod schema;
mod subscriptions;
pub use resolvers::*;
pub use schema::*;
pub use subscriptions::*;
use async_graphql::Schema;
use async_graphql_axum::{GraphQLRequest, GraphQLResponse};
use axum::{
extract::State,
response::{Html, IntoResponse},
Router,
};
use crate::state::AppState;
pub type CortexSchema = Schema<QueryRoot, MutationRoot, SubscriptionRoot>;
pub fn create_schema(state: AppState) -> CortexSchema {
Schema::build(QueryRoot, MutationRoot, SubscriptionRoot)
.data(state)
.finish()
}
pub fn router(_state: AppState, _playground: bool) -> Router {
Router::new()
}
async fn graphql_handler(
State(schema): State<CortexSchema>,
req: GraphQLRequest,
) -> GraphQLResponse {
schema.execute(req.into_inner()).await.into()
}
async fn graphql_playground() -> impl IntoResponse {
Html(async_graphql::http::GraphiQLSource::build()
.endpoint("/graphql")
.subscription_endpoint("/graphql/ws")
.finish())
}