From 22a78413185c3b55e65a8cc4729cadb8b3a53d60 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Wed, 9 Feb 2022 13:35:04 +0530 Subject: [PATCH] fix: keep dtxp property on table create/update re #1132 Signed-off-by: Pranav C --- .../src/lib/noco/common/BaseApiBuilder.ts | 28 +++++++++++++++---- .../nocodb/src/lib/noco/gql/GqlApiBuilder.ts | 11 ++++---- .../src/lib/noco/rest/RestApiBuilder.ts | 11 ++++---- 3 files changed, 35 insertions(+), 15 deletions(-) diff --git a/packages/nocodb/src/lib/noco/common/BaseApiBuilder.ts b/packages/nocodb/src/lib/noco/common/BaseApiBuilder.ts index f3121b571d..e822927af2 100644 --- a/packages/nocodb/src/lib/noco/common/BaseApiBuilder.ts +++ b/packages/nocodb/src/lib/noco/common/BaseApiBuilder.ts @@ -32,6 +32,7 @@ import ncModelsOrderUpgrader from './jobs/ncModelsOrderUpgrader'; import ncParentModelTitleUpgrader from './jobs/ncParentModelTitleUpgrader'; import ncRemoveDuplicatedRelationRows from './jobs/ncRemoveDuplicatedRelationRows'; import xcMetaDiffSync from './handlers/xcMetaDiffSync'; +import UITypes from '../../sqlUi/UITypes'; const log = debug('nc:api:base'); @@ -755,11 +756,12 @@ export default abstract class BaseApiBuilder const columns = changeObj.columns .filter(c => c.altered !== 4) - .map(({ altered: _al, ...rest }) => ({ - ...rest, - // find and overwrite column property from db - ...(columnsFromDb?.find(c => c.cn === rest.cn) || {}) - })) || (await this.getColumnList(tn)); + .map(({ altered: _al, ...rest }) => + this.mergeUiColAndDbColMetas( + rest, + columnsFromDb?.find(c => c.cn === rest.cn) + ) + ) || (await this.getColumnList(tn)); /* Get all relations */ const relations = await this.relationsSyncAndGet(); @@ -1201,6 +1203,22 @@ export default abstract class BaseApiBuilder await NcHelp.executeOperations(aclOper, this.connectionConfig.client); } + protected mergeUiColAndDbColMetas(uiCol, dbCol) { + return { + ...(uiCol || {}), + ...(dbCol || {}), + // persist x props for single/multi select + ...(uiCol?.uidt === UITypes.SingleSelect || + uiCol?.uidt === UITypes.MultiSelect + ? { + dtx: uiCol.dtx, + dtxp: uiCol.dtxp, + dtxs: uiCol.dtxs + } + : {}) + }; + } + public async onViewUpdate( viewName: string, beforeMetaUpdate?: (args: any) => Promise diff --git a/packages/nocodb/src/lib/noco/gql/GqlApiBuilder.ts b/packages/nocodb/src/lib/noco/gql/GqlApiBuilder.ts index 111b3635bb..f7961287b4 100644 --- a/packages/nocodb/src/lib/noco/gql/GqlApiBuilder.ts +++ b/packages/nocodb/src/lib/noco/gql/GqlApiBuilder.ts @@ -195,11 +195,12 @@ export class GqlApiBuilder extends BaseApiBuilder implements XcMetaMgr { const columns = args.columns ? { - [tn]: args.columns?.map(({ altered: _al, ...rest }) => ({ - ...rest, - // find and overwrite column property from db - ...columnsFromDb?.find(c => c.cn === rest.cn) - })) + [tn]: args.columns?.map(({ altered: _al, ...rest }) => + this.mergeUiColAndDbColMetas( + rest, + columnsFromDb?.find(c => c.cn === rest.cn) + ) + ) } : {}; diff --git a/packages/nocodb/src/lib/noco/rest/RestApiBuilder.ts b/packages/nocodb/src/lib/noco/rest/RestApiBuilder.ts index 6468e277a1..fba3033917 100644 --- a/packages/nocodb/src/lib/noco/rest/RestApiBuilder.ts +++ b/packages/nocodb/src/lib/noco/rest/RestApiBuilder.ts @@ -881,11 +881,12 @@ export class RestApiBuilder extends BaseApiBuilder { const columns = args.columns ? { - [tn]: args.columns?.map(({ altered: _al, ...rest }) => ({ - ...rest, - // find and overwrite column property from db - ...(columnsFromDb?.find(c => c.cn === rest.cn) || {}) - })) + [tn]: args.columns?.map(({ altered: _al, ...rest }) => + this.mergeUiColAndDbColMetas( + rest, + columnsFromDb?.find(c => c.cn === rest.cn) + ) + ) } : {};