From 1df4b2c2f5241edb920ba6fc055ce75100275b7b Mon Sep 17 00:00:00 2001 From: Pranav C Date: Thu, 4 Jan 2024 13:19:18 +0000 Subject: [PATCH] feat: created/modified time - column creation - WIP --- packages/nocodb-sdk/src/lib/index.ts | 1 + .../nocodb/src/helpers/getColumnPropsFromUIDT.ts | 16 +++++++++------- packages/nocodb/src/services/columns.service.ts | 9 +++++++-- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/packages/nocodb-sdk/src/lib/index.ts b/packages/nocodb-sdk/src/lib/index.ts index 4be58508a9..78dfdf294c 100644 --- a/packages/nocodb-sdk/src/lib/index.ts +++ b/packages/nocodb-sdk/src/lib/index.ts @@ -13,6 +13,7 @@ export { isNumericCol, isVirtualCol, isLinksOrLTAR, + isCreatedTimeOrUpdatedTimeCol, } from '~/lib/UITypes'; export { default as CustomAPI, FileType } from '~/lib/CustomAPI'; export { default as TemplateGenerator } from '~/lib/TemplateGenerator'; diff --git a/packages/nocodb/src/helpers/getColumnPropsFromUIDT.ts b/packages/nocodb/src/helpers/getColumnPropsFromUIDT.ts index 671b3c6508..3210762fae 100644 --- a/packages/nocodb/src/helpers/getColumnPropsFromUIDT.ts +++ b/packages/nocodb/src/helpers/getColumnPropsFromUIDT.ts @@ -23,12 +23,6 @@ export default async function getColumnPropsFromUIDT( ...colProp, }; - if (newColumn.uidt === UITypes.CreateTime) { - newColumn.column_name = 'created_at'; - } else if (newColumn.uidt === UITypes.LastModifiedTime) { - newColumn.column_name = 'updated_at'; - } - newColumn.dtxp = sqlUi.getDefaultLengthForDatatype(newColumn.dt); newColumn.dtxs = sqlUi.getDefaultScaleForDatatype(newColumn.dt); @@ -43,5 +37,13 @@ export default async function getColumnPropsFromUIDT( newColumn.altered = column.altered || 2; - return { ...newColumn, ...column }; + const finalColumnMeta = { ...newColumn, ...column }; + + if (finalColumnMeta.uidt === UITypes.CreateTime) { + finalColumnMeta.column_name = 'created_at'; + } else if (finalColumnMeta.uidt === UITypes.LastModifiedTime) { + finalColumnMeta.column_name = 'updated_at'; + } + + return finalColumnMeta; } diff --git a/packages/nocodb/src/services/columns.service.ts b/packages/nocodb/src/services/columns.service.ts index 0b05557265..d2ed5d5143 100644 --- a/packages/nocodb/src/services/columns.service.ts +++ b/packages/nocodb/src/services/columns.service.ts @@ -8,6 +8,7 @@ import type { } from 'nocodb-sdk'; import { AppEvents, + isCreatedTimeOrUpdatedTimeCol, isLinksOrLTAR, isVirtualCol, substituteColumnAliasWithIdInFormula, @@ -17,7 +18,6 @@ import { } from 'nocodb-sdk'; import { pluralize, singularize } from 'inflection'; import hash from 'object-hash'; -import { isCreatedTimeOrUpdatedTimeCol } from 'nocodb-sdk/build/main/lib/UITypes'; import type { ColumnReqType, LinkToAnotherColumnReqType, @@ -1734,7 +1734,12 @@ export class ColumnsService { // check if column already exists, then just create a new column in meta // else create a new column in meta and db const existingColumn = await table.getColumns().then((col) => { - return col.find((c) => c.uidt === colBody.uidt); + return col.find( + (c) => + c.uidt === colBody.uidt || + c.column_name === + (c.uidt === UITypes.CreateTime ? 'created_at' : 'updated_at'), + ); }); if (!existingColumn) {