Two teams try and fill in any horizontal, vertical, or diagonal line on a bingo board by playing maps on osu! osu.bingo
osu
at microservice 33 lines 1.1 kB view raw
1use std::sync::Arc; 2 3use axum::{Extension, Router, routing::get}; 4use juniper_axum::{extract::JuniperRequest, graphiql, response::JuniperResponse}; 5 6use crate::{ 7 database::{DataContext, pool}, 8 schema, 9}; 10 11async fn sdl(Extension(schema): Extension<Arc<schema::Schema>>) -> axum::response::Response { 12 axum::response::Response::new(schema.as_sdl().into()) 13} 14 15async fn handle_graphql( 16 Extension(schema): Extension<Arc<schema::Schema>>, 17 Extension(context): Extension<schema::Context>, 18 JuniperRequest(request): JuniperRequest, 19) -> JuniperResponse { 20 let loader = DataContext::new(context.pool.clone()); 21 JuniperResponse(request.execute(&*schema, &loader).await) 22} 23 24pub async fn router() -> Router { 25 let state = schema::Context { pool: pool().await }; 26 27 Router::new() 28 .route("/schema", get(sdl)) 29 .route("/graphql", get(handle_graphql).post(handle_graphql)) 30 .route("/", get(graphiql("/graphql", "/subscriptions"))) 31 .layer(Extension(Arc::new(schema::create_schema()))) 32 .layer(Extension(state)) 33}