From 1a413d75e156b5e1ce6ddebc148d0b42011c8935 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Thu, 4 Jan 2024 13:19:23 +0000 Subject: [PATCH] feat: create system fields by default if not part of the table create request --- .../nocodb/src/services/tables.service.ts | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/packages/nocodb/src/services/tables.service.ts b/packages/nocodb/src/services/tables.service.ts index 73198aeb68..fce479ac01 100644 --- a/packages/nocodb/src/services/tables.service.ts +++ b/packages/nocodb/src/services/tables.service.ts @@ -1,24 +1,25 @@ import { Injectable } from '@nestjs/common'; import DOMPurify from 'isomorphic-dompurify'; import { + AppEvents, isLinksOrLTAR, isVirtualCol, ModelTypes, ProjectRoles, UITypes, } from 'nocodb-sdk'; -import { AppEvents } from 'nocodb-sdk'; import { MetaDiffsService } from './meta-diffs.service'; import { ColumnsService } from './columns.service'; -import type { MetaService } from '~/meta/meta.service'; -import type { LinkToAnotherRecordColumn, User, View } from '~/models'; import type { ColumnType, NormalColumnRequestType, TableReqType, UserType, } from 'nocodb-sdk'; +import type { MetaService } from '~/meta/meta.service'; +import type { LinkToAnotherRecordColumn, User, View } from '~/models'; import type { NcRequest } from '~/interface/config'; +import { Base, Column, Model, ModelRoleVisibility } from '~/models'; import { AppHooksService } from '~/services/app-hooks/app-hooks.service'; import ProjectMgrv2 from '~/db/sql-mgr/v2/ProjectMgrv2'; import { NcError } from '~/helpers/catchError'; @@ -26,7 +27,6 @@ import getColumnPropsFromUIDT from '~/helpers/getColumnPropsFromUIDT'; import getColumnUiType from '~/helpers/getColumnUiType'; import getTableNameAlias, { getColumnNameAlias } from '~/helpers/getTableName'; import mapDefaultDisplayValue from '~/helpers/mapDefaultDisplayValue'; -import { Base, Column, Model, ModelRoleVisibility } from '~/models'; import Noco from '~/Noco'; import NcConnectionMgrv2 from '~/utils/common/NcConnectionMgrv2'; import { sanitizeColumnName, validatePayload } from '~/helpers'; @@ -379,6 +379,19 @@ export class TablesService { source = base.sources.find((b) => b.id === param.sourceId); } + // add CreatedBy and LastModifiedBy system columns if missing in request payload + { + for (const uidt of [UITypes.CreatedTime, UITypes.LastModifiedTime]) { + if ( + !tableCreatePayLoad.columns.find((c) => c.uidt === uidt && c.system) + ) { + tableCreatePayLoad.columns.push( + await getColumnPropsFromUIDT({ uidt } as any, source), + ); + } + } + } + if ( !tableCreatePayLoad.table_name || (base.prefix && base.prefix === tableCreatePayLoad.table_name)