reactive_graph_plugin_graphql_impl/
plugin_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_plugin_graphql_api::PluginQueryService;
11use reactive_graph_plugin_graphql_api::PluginSchemaManager;
12
13#[derive(Component)]
14pub struct PluginQueryServiceImpl {
15    plugin_schema_manager: Arc<dyn PluginSchemaManager + Send + Sync>,
16}
17
18#[async_trait]
19#[component_alias]
20impl PluginQueryService for PluginQueryServiceImpl {
21    async fn query(&self, request: &str) -> Result<String, serde_json::Error> {
22        let schema = self.plugin_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.plugin_schema_manager.get_schema().execute(request).await
29    }
30
31    async fn execute(&self, request: Request) -> Response {
32        self.plugin_schema_manager.get_schema().execute(request).await
33    }
34}
35
36#[async_trait]
37impl Lifecycle for PluginQueryServiceImpl {}