import type { PgColumn, PgTable } from '../abstractions/index.js'; import { ContentEntityModel } from '../content-entity-model.js'; export function findEntityModel( models: ContentEntityModel[], entityName: string, ): ContentEntityModel { const entityModel = models.find((m) => m.contentEntity.name === entityName); if (!entityModel) { throw Error(`Content entity model for ${entityName} not found.`); } return entityModel; } export function removeColumnByName(columns: PgColumn[], name: string): void { columns.forEach((c, i) => { if (c.name === name) { columns.splice(i, 1); } }); } export interface NameOverride { [name: string]: [string, string?]; } export function renameDbItem( item: PgTable | PgColumn, newName: string, displayName?: string, ): void { item.name = newName; if (displayName) { item.displayName = displayName; } } export function applyNameOverrides( model: ContentEntityModel, overrides: NameOverride, ): void { const mainModelTables = [model.contentEntity, ...model.relatedObjects]; for (const table of mainModelTables) { let rename = overrides[table.name]; if (rename) { renameDbItem(table, ...rename); } for (const column of table.columns) { rename = overrides[column.name]; if (rename) { renameDbItem(column, ...rename); } } } }