reactive_graph_runtime_graphql_impl/
runtime_query_service_impl.rs

1use std::sync::Arc;
2
3use async_graphql::Request;
4use async_graphql::Response;
5use async_trait::async_trait;
6use springtime_di::Component;
7use springtime_di::component_alias;
8
9use reactive_graph_lifecycle::Lifecycle;
10use reactive_graph_runtime_graphql_api::RuntimeQueryService;
11use reactive_graph_runtime_graphql_api::RuntimeSchemaManager;
12
13#[derive(Component)]
14pub struct RuntimeQueryServiceImpl {
15    runtime_schema_manager: Arc<dyn RuntimeSchemaManager + Send + Sync>,
16}
17
18#[async_trait]
19#[component_alias]
20impl RuntimeQueryService for RuntimeQueryServiceImpl {
21    async fn query(&self, request: &str) -> Result<String, serde_json::Error> {
22        let schema = self.runtime_schema_manager.get_schema();
23        let result = schema.execute(request).await;
24        serde_json::to_string(&result)
25    }
26
27    async fn query_response(&self, request: &str) -> Response {
28        self.runtime_schema_manager.get_schema().execute(request).await
29    }
30
31    async fn execute(&self, request: Request) -> Response {
32        self.runtime_schema_manager.get_schema().execute(request).await
33    }
34}
35
36#[async_trait]
37impl Lifecycle for RuntimeQueryServiceImpl {}