reactive_graph_graphql_web/
lib.rs1use actix_web::HttpRequest;
2use actix_web::HttpResponse;
3use actix_web::Result;
4use actix_web::post;
5use actix_web::web;
6use async_graphql::Schema;
7use async_graphql_actix_web::GraphQLRequest;
8use async_graphql_actix_web::GraphQLResponse;
9use async_graphql_actix_web::GraphQLSubscription;
10use log::trace;
11use reactive_graph_graphql_schema::ReactiveGraphSchema;
12
13#[post("/graphql")]
14pub async fn query_graphql(schema: web::Data<ReactiveGraphSchema>, request: GraphQLRequest) -> GraphQLResponse {
15 let request = request.into_inner();
16 trace!("{request:?}");
17 let response = schema.execute(request).await;
18 trace!("{response:?}");
19 response.into()
20}
21
22pub async fn subscription_websocket(schema: web::Data<ReactiveGraphSchema>, request: HttpRequest, payload: web::Payload) -> Result<HttpResponse> {
23 GraphQLSubscription::new(Schema::clone(&*schema))
28 .start(&request, payload)
31}