Browse Source

refactor: limit table name length

pull/9733/head
Pranav C 1 month ago
parent
commit
a72e59e7c1
  1. 37
      packages/nocodb/src/services/columns.service.ts

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

@ -135,16 +135,39 @@ async function reuseOrSave(
return res;
}
function getJunctionTableName(
async function getJunctionTableName(
param: {
base: Base;
},
parent: Model,
child: Model,
) {
return `${param.base?.prefix ?? ''}_nc_m2m_${parent.table_name}_${
child.table_name
}`;
const parentTable = param.base?.prefix
? parent.table_name.replace(`${param.base?.prefix}_`, '')
: parent.table_name;
const childTable = param.base?.prefix
? child.table_name.replace(`${param.base?.prefix}_`, '')
: child.table_name;
const tableName = `${
param.base?.prefix ?? ''
}_nc_m2m_${parentTable.slice(0, 15)}_${childTable.slice(0, 15)}`;
let suffix: number = null;
// check table name avail or not, if not then add incremental suffix
while (
await Noco.ncMeta.metaGet2(
(parent as any).fk_workspace_id,
parent.base_id,
MetaTable.MODELS,
{
table_name: `${tableName}${suffix ?? ''}`,
source_id: parent.source_id,
},
)
) {
suffix = suffix ? suffix + 1 : 1;
}
return `${tableName}${suffix ?? ''}`;
}
@Injectable()
@ -3278,7 +3301,7 @@ export class ColumnsService {
param.colExtra,
);
} else if ((param.column as LinkToAnotherColumnReqType).type === 'mm') {
const aTn = getJunctionTableName(param, parent, child);
const aTn = await getJunctionTableName(param, parent, child);
const aTnAlias = aTn;
const parentPK = parent.primaryKey;
@ -3286,8 +3309,8 @@ export class ColumnsService {
const associateTableCols = [];
const parentCn = `${parent.table_name}_id`;
const childCn = `${child.table_name}_id`;
const parentCn = `${parent.table_name.slice(0, 30)}_id`;
const childCn = `${child.table_name.slice(0, 30)}_id`;
associateTableCols.push(
{

Loading…
Cancel
Save