From 5cd3a91cb833f076c6b03efdac3df00c2b0d0efe Mon Sep 17 00:00:00 2001
From: Leonardo Christino <leomilho@gmail.com>
Date: Fri, 16 Feb 2024 19:43:15 +0100
Subject: [PATCH] chore: save translated query in redux

---
 libs/shared/lib/data-access/api/eventBus.tsx     |  9 ++++++++-
 .../lib/data-access/store/querybuilderSlice.ts   | 16 +++++++++++++++-
 2 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/libs/shared/lib/data-access/api/eventBus.tsx b/libs/shared/lib/data-access/api/eventBus.tsx
index acc34c2a8..219e3984f 100644
--- a/libs/shared/lib/data-access/api/eventBus.tsx
+++ b/libs/shared/lib/data-access/api/eventBus.tsx
@@ -19,7 +19,7 @@ import Broker from '@graphpolaris/shared/lib/data-access/socket/broker';
 import { addInfo } from '@graphpolaris/shared/lib/data-access/store/configSlice';
 import { GraphQueryResultFromBackendPayload, queryingBackend } from '@graphpolaris/shared/lib/data-access/store/graphQueryResultSlice';
 import { allMLTypes, LinkPredictionInstance, setMLResult } from '@graphpolaris/shared/lib/data-access/store/mlSlice';
-import { setQuerybuilderNodes } from '@graphpolaris/shared/lib/data-access/store/querybuilderSlice';
+import { QueryBuilderText, setQueryText, setQuerybuilderNodes } from '@graphpolaris/shared/lib/data-access/store/querybuilderSlice';
 import { SchemaFromBackend } from '@graphpolaris/shared/lib/schema';
 import { useEffect } from 'react';
 import { SaveStateI, TestDatabaseConnectionResponse, wsGetState, wsGetStates, wsUpdateState, wsSelectState, nilUUID } from './wsState';
@@ -96,6 +96,12 @@ export const EventBus = (props: { onRunQuery: Function; onAuthorized: Function }
       if (response && response.status === 'success') dispatch(testedSaveState(response.saveStateID));
     }, 'tested_connection');
 
+    Broker.instance().subscribe((response: QueryBuilderText) => {
+      if (response && response.result) {
+        dispatch(setQueryText(response));
+      }
+    }, 'query_translation_result');
+
     login();
 
     // Setup cleanup
@@ -109,6 +115,7 @@ export const EventBus = (props: { onRunQuery: Function; onAuthorized: Function }
       Broker.instance().unSubscribeAll('delete_save_state');
       Broker.instance().unSubscribeAll('tested_connection');
       Broker.instance().unSubscribeAll('save_state_selected');
+      Broker.instance().unSubscribeAll('query_translation_result');
       // Broker.instance().unSubscribeAll('query_builder_state');
       allMLTypes.forEach((mlType) => {
         Broker.instance().unSubscribeAll(mlType);
diff --git a/libs/shared/lib/data-access/store/querybuilderSlice.ts b/libs/shared/lib/data-access/store/querybuilderSlice.ts
index 03cce603d..d9a3c7f1c 100644
--- a/libs/shared/lib/data-access/store/querybuilderSlice.ts
+++ b/libs/shared/lib/data-access/store/querybuilderSlice.ts
@@ -1,3 +1,4 @@
+import { QueryBuilder } from './../../querybuilder/panel/querybuilder';
 import { createSlice, PayloadAction } from '@reduxjs/toolkit';
 import type { RootState } from './store';
 import Graph, { MultiGraph } from 'graphology';
@@ -14,10 +15,16 @@ export type QueryBuilderSettings = {
   autocompleteRelation: boolean;
 };
 
+export type QueryBuilderText = {
+  queryId: string;
+  result: string;
+};
+
 export type QueryBuilderState = {
   graph: QueryMultiGraph;
   ignoreReactivity: boolean;
   settings: QueryBuilderSettings;
+  queryTranslation: QueryBuilderText;
 };
 
 // Define the initial state using that type
@@ -30,6 +37,10 @@ export const initialState: QueryBuilderState = {
     layout: 'manual',
     autocompleteRelation: true,
   },
+  queryTranslation: {
+    queryId: '',
+    result: '',
+  },
   // schemaLayout: 'Graphology_noverlap',
 };
 
@@ -55,6 +66,9 @@ export const querybuilderSlice = createSlice({
     setQuerybuilderSettings: (state, action: PayloadAction<QueryBuilderSettings>) => {
       state.settings = action.payload;
     },
+    setQueryText: (state, action: PayloadAction<QueryBuilderText>) => {
+      state.queryTranslation = action.payload;
+    },
   },
 });
 
@@ -112,4 +126,4 @@ export const selectQuerybuilderHash = (state: RootState): string => {
 //   state.schema.schemaLayout;
 
 export default querybuilderSlice.reducer;
-export const { setQuerybuilderGraph, clearQB, setQuerybuilderSettings, setQuerybuilderNodes } = querybuilderSlice.actions;
+export const { setQuerybuilderGraph, clearQB, setQuerybuilderSettings, setQuerybuilderNodes, setQueryText } = querybuilderSlice.actions;
-- 
GitLab