From 54953a426f629c04d18028b579b23dcc708dab28 Mon Sep 17 00:00:00 2001 From: Ganesh Kumar <40178541+ganesh8056@users.noreply.github.com> Date: Wed, 18 Oct 2023 16:44:55 +0530 Subject: [PATCH] hotfix: tjdb columns of table selected is not listed on drop-down (#7927) * fix: column names for table is not listed on dropdown * fix: tjdb list create update and delete operation when adding new conditions old conditions were deleted * bump to v2.21.2 --------- Co-authored-by: Akshay Sasidharan --- .version | 2 +- frontend/.version | 2 +- .../TooljetDatabase/CreateRow.jsx | 5 +++-- .../TooljetDatabase/DeleteRows.jsx | 5 +++-- .../QueryEditors/TooljetDatabase/ListRows.jsx | 7 ++++--- .../TooljetDatabase/ToolJetDbOperations.jsx | 21 ++++++++++++------- .../TooljetDatabase/UpdateRows.jsx | 7 ++++--- server/.version | 2 +- 8 files changed, 30 insertions(+), 21 deletions(-) diff --git a/.version b/.version index 3fe7dd19b6..8392a795a9 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -2.21.1 +2.21.2 diff --git a/frontend/.version b/frontend/.version index 3fe7dd19b6..8392a795a9 100644 --- a/frontend/.version +++ b/frontend/.version @@ -1 +1 @@ -2.21.1 +2.21.2 diff --git a/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/CreateRow.jsx b/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/CreateRow.jsx index dee0afc5ef..88d51e6287 100644 --- a/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/CreateRow.jsx +++ b/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/CreateRow.jsx @@ -2,7 +2,8 @@ import React, { useState, useEffect, useContext } from 'react'; import { CodeHinter } from '@/Editor/CodeBuilder/CodeHinter'; import { TooljetDatabaseContext } from '@/TooljetDatabase/index'; import Select from '@/_ui/Select'; -import { isEmpty, uniqueId } from 'lodash'; +import { v4 as uuidv4 } from 'uuid'; +import { isEmpty } from 'lodash'; import { useMounted } from '@/_hooks/use-mount'; import { ButtonSolid } from '@/_ui/AppButton/AppButton'; @@ -40,7 +41,7 @@ export const CreateRow = React.memo(({ optionchanged, options, darkMode }) => { } const existingColumnOption = Object.values ? Object.values(columnOptions) : []; const emptyColumnOption = { column: '', value: '' }; - handleColumnOptionChange({ ...existingColumnOption, ...{ [uniqueId()]: emptyColumnOption } }); + handleColumnOptionChange({ ...existingColumnOption, ...{ [uuidv4()]: emptyColumnOption } }); } return ( diff --git a/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/DeleteRows.jsx b/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/DeleteRows.jsx index 4f24f113bc..7be3d57b98 100644 --- a/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/DeleteRows.jsx +++ b/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/DeleteRows.jsx @@ -1,6 +1,7 @@ import React, { useContext } from 'react'; import { TooljetDatabaseContext } from '@/TooljetDatabase/index'; -import { isEmpty, uniqueId } from 'lodash'; +import { v4 as uuidv4 } from 'uuid'; +import { isEmpty } from 'lodash'; import { CodeHinter } from '@/Editor/CodeBuilder/CodeHinter'; import Select from '@/_ui/Select'; import { operators } from '@/TooljetDatabase/constants'; @@ -18,7 +19,7 @@ export const DeleteRows = React.memo(({ darkMode }) => { function addNewFilterConditionPair() { const existingFilters = deleteRowsOptions?.where_filters ? Object.values(deleteRowsOptions?.where_filters) : []; const emptyFilter = { column: '', operator: '', value: '' }; - const newFilter = { ...emptyFilter, ...{ id: uniqueId() } }; + const newFilter = { ...emptyFilter, ...{ id: uuidv4() } }; handleWhereFiltersChange({ ...existingFilters, ...{ [newFilter.id]: newFilter } }); } diff --git a/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/ListRows.jsx b/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/ListRows.jsx index c630d01ed0..4944a64ae8 100644 --- a/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/ListRows.jsx +++ b/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/ListRows.jsx @@ -1,7 +1,8 @@ import React, { useContext } from 'react'; import { CodeHinter } from '@/Editor/CodeBuilder/CodeHinter'; import { TooljetDatabaseContext } from '@/TooljetDatabase/index'; -import { isEmpty, uniqueId } from 'lodash'; +import { v4 as uuidv4 } from 'uuid'; +import { isEmpty } from 'lodash'; import Select from '@/_ui/Select'; import { operators } from '@/TooljetDatabase/constants'; import { isOperatorOptions } from './util'; @@ -21,14 +22,14 @@ export const ListRows = React.memo(({ darkMode }) => { function addNewFilterConditionPair() { const existingFilters = listRowsOptions?.where_filters ? Object.values(listRowsOptions?.where_filters) : []; const emptyFilter = { column: '', operator: '', value: '' }; - const newFilter = { ...emptyFilter, ...{ id: uniqueId() } }; + const newFilter = { ...emptyFilter, ...{ id: uuidv4() } }; handleWhereFiltersChange({ ...existingFilters, ...{ [newFilter.id]: newFilter } }); } function addNewSortConditionPair() { const existingFilters = listRowsOptions?.order_filters ? Object.values(listRowsOptions?.order_filters) : []; const emptyFilter = { column: '', order: '' }; - const newFilter = { ...emptyFilter, ...{ id: uniqueId() } }; + const newFilter = { ...emptyFilter, ...{ id: uuidv4() } }; handleOrderFiltersChange({ ...existingFilters, ...{ [newFilter.id]: newFilter } }); } diff --git a/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/ToolJetDbOperations.jsx b/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/ToolJetDbOperations.jsx index 5c698701fb..3f0d47f1d0 100644 --- a/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/ToolJetDbOperations.jsx +++ b/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/ToolJetDbOperations.jsx @@ -160,7 +160,7 @@ const ToolJetDbOperations = ({ optionchanged, options, darkMode, isHorizontalLay }, [options['join_table']?.['joins'], tables]); useEffect(() => { - selectedTableId && fetchTableInformation(selectedTableId); + selectedTableId && fetchTableInformation(selectedTableId, false, tables); // eslint-disable-next-line react-hooks/exhaustive-deps }, [selectedTableId]); @@ -266,6 +266,10 @@ const ToolJetDbOperations = ({ optionchanged, options, darkMode, isHorizontalLay }); }; + const findTableDetailsWithTableList = (tableId, tableList) => { + return tableList.find((table) => table.table_id == tableId); + }; + const findTableDetails = (tableId) => { return tables.find((table) => table.table_id == tableId); }; @@ -329,15 +333,16 @@ const ToolJetDbOperations = ({ optionchanged, options, darkMode, isHorizontalLay } if (Array.isArray(data?.result)) { - setTables( + const tableList = data.result.map((table) => { return { table_name: table.table_name, table_id: table.id }; - }) || [] - ); + }) || []; + + setTables(tableList); const selectedTableInfo = data.result.find((table) => table.id === options['table_id']); if (selectedTableInfo) { setSelectedTableId(selectedTableInfo.id); - fetchTableInformation(selectedTableInfo.id); + fetchTableInformation(selectedTableInfo.id, false, tableList); } } }; @@ -345,8 +350,8 @@ const ToolJetDbOperations = ({ optionchanged, options, darkMode, isHorizontalLay /** * TODO: This function to be removed and replaced with loadTableInformation function everywhere */ - const fetchTableInformation = async (tableId, isNewTableAdded) => { - const tableDetails = findTableDetails(tableId); + const fetchTableInformation = async (tableId, isNewTableAdded, tableList) => { + const tableDetails = findTableDetailsWithTableList(tableId, tableList); if (tableDetails?.table_name) { const { table_name } = tableDetails; const { error, data } = await tooljetDatabaseService.viewTable(organizationId, table_name); @@ -402,7 +407,7 @@ const ToolJetDbOperations = ({ optionchanged, options, darkMode, isHorizontalLay const handleTableNameSelect = (tableId) => { setSelectedTableId(tableId); - fetchTableInformation(tableId, true); + fetchTableInformation(tableId, true, tables); optionchanged('organization_id', organizationId); optionchanged('table_id', tableId); diff --git a/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/UpdateRows.jsx b/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/UpdateRows.jsx index 2450e295da..b573d712f7 100644 --- a/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/UpdateRows.jsx +++ b/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/UpdateRows.jsx @@ -3,7 +3,8 @@ import { CodeHinter } from '@/Editor/CodeBuilder/CodeHinter'; import { TooljetDatabaseContext } from '@/TooljetDatabase/index'; import Select from '@/_ui/Select'; import { operators } from '@/TooljetDatabase/constants'; -import { isEmpty, uniqueId } from 'lodash'; +import { v4 as uuidv4 } from 'uuid'; +import { isEmpty } from 'lodash'; import { isOperatorOptions } from './util'; import { ButtonSolid } from '@/_ui/AppButton/AppButton'; @@ -34,7 +35,7 @@ export const UpdateRows = React.memo(({ darkMode }) => { const existingColumnOption = Object.values ? Object.values(updateRowsOptions?.columns) : []; const emptyColumnOption = { column: '', value: '' }; - handleColumnOptionChange({ ...existingColumnOption, ...{ [uniqueId()]: emptyColumnOption } }); + handleColumnOptionChange({ ...existingColumnOption, ...{ [uuidv4()]: emptyColumnOption } }); } function handleWhereFiltersChange(filters) { @@ -44,7 +45,7 @@ export const UpdateRows = React.memo(({ darkMode }) => { function addNewFilterConditionPair() { const existingFilters = updateRowsOptions?.where_filters ? Object.values(updateRowsOptions?.where_filters) : []; const emptyFilter = { column: '', operator: '', value: '' }; - const newFilter = { ...emptyFilter, ...{ id: uniqueId() } }; + const newFilter = { ...emptyFilter, ...{ id: uuidv4() } }; handleWhereFiltersChange({ ...existingFilters, ...{ [newFilter.id]: newFilter } }); } diff --git a/server/.version b/server/.version index 3fe7dd19b6..8392a795a9 100644 --- a/server/.version +++ b/server/.version @@ -1 +1 @@ -2.21.1 +2.21.2