Browse Source

Merge pull request #7403 from nocodb/nc-fix/cloud-performance-bug

Nc fix: Skip getting column list from database on table/column create
pull/7481/head
Pranav C 11 months ago committed by GitHub
parent
commit
a0419bc708
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 36
      packages/nocodb/src/services/columns.service.ts
  2. 43
      packages/nocodb/src/services/tables.service.ts

36
packages/nocodb/src/services/columns.service.ts

@ -2009,29 +2009,27 @@ export class ColumnsService {
); );
await sqlMgr.sqlOpPlus(source, 'tableUpdate', tableUpdateBody); await sqlMgr.sqlOpPlus(source, 'tableUpdate', tableUpdateBody);
const columns: Array< if (!source.isMeta()) {
Omit<Column, 'column_name' | 'title'> & { const columns: Array<
cn: string; Omit<Column, 'column_name' | 'title'> & {
system?: boolean; cn: string;
} system?: boolean;
> = ( }
await sqlClient.columnList({ > = (
tn: table.table_name, await sqlClient.columnList({
schema: source.getConfig()?.schema, tn: table.table_name,
}) schema: source.getConfig()?.schema,
)?.data?.list; })
)?.data?.list;
const insertedColumnMeta =
columns.find((c) => c.cn === colBody.column_name) || ({} as any);
const insertedColumnMeta = Object.assign(colBody, insertedColumnMeta);
columns.find((c) => c.cn === colBody.column_name) || ({} as any); }
await Column.insert({ await Column.insert({
...colBody, ...colBody,
...insertedColumnMeta,
dtxp: [UITypes.MultiSelect, UITypes.SingleSelect].includes(
colBody.uidt as any,
)
? colBody.dtxp
: insertedColumnMeta.dtxp,
fk_model_id: table.id, fk_model_id: table.id,
}); });
} }

43
packages/nocodb/src/services/tables.service.ts

@ -381,7 +381,7 @@ export class TablesService {
validatePayload('swagger.json#/components/schemas/TableReq', param.table); validatePayload('swagger.json#/components/schemas/TableReq', param.table);
const tableCreatePayLoad: Omit<TableReqType, 'columns'> & { const tableCreatePayLoad: Omit<TableReqType, 'columns'> & {
columns: (Omit<ColumnType, 'column_name' | 'title'> & { cn?: string })[]; columns: (ColumnType & { cn?: string })[];
} = { } = {
...param.table, ...param.table,
}; };
@ -548,6 +548,8 @@ export class TablesService {
const uniqueColumnNameCount = {}; const uniqueColumnNameCount = {};
mapDefaultDisplayValue(param.table.columns);
for (const column of param.table.columns) { for (const column of param.table.columns) {
if ( if (
!isVirtualCol(column) || !isVirtualCol(column) ||
@ -604,43 +606,36 @@ export class TablesService {
tn: tableCreatePayLoad.table_name, tn: tableCreatePayLoad.table_name,
}); });
const columns: Array< let columns: Array<
Omit<Column, 'column_name' | 'title'> & { Omit<Column, 'column_name' | 'title'> & {
cn: string; cn: string;
system?: boolean; system?: boolean;
} }
> = ( >;
await sqlMgr.sqlOpPlus(source, 'columnList', { if (!source.isMeta()) {
tn: tableCreatePayLoad.table_name, columns = (
schema: source.getConfig()?.schema, await sqlMgr.sqlOpPlus(source, 'columnList', {
}) tn: tableCreatePayLoad.table_name,
)?.data?.list; schema: source.getConfig()?.schema,
})
)?.data?.list;
}
const tables = await Model.list({ const tables = await Model.list({
base_id: base.id, base_id: base.id,
source_id: source.id, source_id: source.id,
}); });
mapDefaultDisplayValue(param.table.columns);
// todo: type correction // todo: type correction
const result = await Model.insert(base.id, source.id, { const result = await Model.insert(base.id, source.id, {
...tableCreatePayLoad, ...tableCreatePayLoad,
columns: columns.map((c, i) => { columns: tableCreatePayLoad.columns.map((c, i) => {
const colMetaFromReq = param.table?.columns?.find( const colMetaFromDb = columns?.find((c1) => c.cn === c1.cn);
(c1) => c.cn === c1.column_name,
);
return { return {
...colMetaFromReq,
uidt: colMetaFromReq?.uidt || c.uidt || getColumnUiType(source, c),
...c, ...c,
dtxp: [UITypes.MultiSelect, UITypes.SingleSelect].includes( uidt: c.uidt || getColumnUiType(source, colMetaFromDb || c),
colMetaFromReq.uidt as any, ...(colMetaFromDb || {}),
) title: c.title || getColumnNameAlias(c.cn, source),
? colMetaFromReq.dtxp column_name: colMetaFromDb?.cn || c.cn || c.column_name,
: c.dtxp,
title: colMetaFromReq?.title || getColumnNameAlias(c.cn, source),
column_name: c.cn,
order: i + 1, order: i + 1,
} as NormalColumnRequestType; } as NormalColumnRequestType;
}), }),

Loading…
Cancel
Save