reactive_graph_graphql_web/
lib.rs

1use 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    // let mut data = Data::default();
24    // if let Some(token) = get_token_from_headers(request.headers()) {
25    //     data.insert(token);
26    // }
27    GraphQLSubscription::new(Schema::clone(&*schema))
28        // .with_data(data)
29        // .on_connection_init(on_connection_init)
30        .start(&request, payload)
31}