#![feature(decl_macro, proc_macro_hygiene)] use rocket::response::content; use rocket::State; use juniper::tests::model::Database; use juniper::{EmptyMutation, RootNode}; type Schema = RootNode<'static, Database, EmptyMutation<Database>>; #[rocket::get("/")] fn graphiql() -> content::Html<String> { juniper_rocket::graphiql_source("/graphql") } #[rocket::get("/graphql?<request>")] fn get_graphql_handler( context: State<Database>, request: juniper_rocket::GraphQLRequest, schema: State<Schema>, ) -> juniper_rocket::GraphQLResponse { request.execute(&schema, &context) } #[rocket::post("/graphql", data = "<request>")] fn post_graphql_handler( context: State<Database>, request: juniper_rocket::GraphQLRequest, schema: State<Schema>, ) -> juniper_rocket::GraphQLResponse { request.execute(&schema, &context) } fn main() { rocket::ignite() .manage(Database::new()) .manage(Schema::new( Database::new(), EmptyMutation::<Database>::new(), )) .mount( "/", rocket::routes![graphiql, get_graphql_handler, post_graphql_handler], ) .launch(); }