Browse Source

refactor: avoid extracting columnList in table create and column create ( metadb project )

pull/7403/head
Pranav C 11 months ago
parent
commit
70ee378297
  1. 36
      packages/nocodb/src/services/columns.service.ts
  2. 40
      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,
}); });
} }

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

@ -380,7 +380,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,
}; };
@ -603,18 +603,20 @@ 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,
@ -625,21 +627,15 @@ export class TablesService {
// 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 || {}),
) dtxp: colMetaFromDb?.dtxp ?? c.dtxp,
? colMetaFromReq.dtxp title: c.title || getColumnNameAlias(c.cn, source),
: c.dtxp, column_name: colMetaFromDb?.cn || c.cn || c.column_name,
title: colMetaFromReq?.title || getColumnNameAlias(c.cn, source),
column_name: c.cn,
order: i + 1, order: i + 1,
} as NormalColumnRequestType; } as NormalColumnRequestType;
}), }),

Loading…
Cancel
Save