perspectives: prefer not circular lookups

This commit is contained in:
Jan Prochazka
2022-08-06 15:30:49 +02:00
parent 137631b5b5
commit aff1fe0b3d
3 changed files with 40 additions and 23 deletions

View File

@@ -1,7 +1,11 @@
import { findForeignKeyForColumn } from 'dbgate-tools';
import { DatabaseInfo, TableInfo, ViewInfo } from 'dbgate-types';
export function getPerspectiveDefaultColumns(table: TableInfo | ViewInfo, db: DatabaseInfo): string[] {
export function getPerspectiveDefaultColumns(
table: TableInfo | ViewInfo,
db: DatabaseInfo,
circularColumns: string[]
): string[] {
const columns = table.columns.map(x => x.columnName);
const predicates = [
x => x.toLowerCase() == 'name',
@@ -9,6 +13,7 @@ export function getPerspectiveDefaultColumns(table: TableInfo | ViewInfo, db: Da
x => x.toLowerCase().includes('name'),
x => x.toLowerCase().includes('title'),
x => x.dataType?.toLowerCase()?.includes('char'),
x => findForeignKeyForColumn(table as TableInfo, x)?.columns?.length == 1 && !circularColumns.includes(x),
x => findForeignKeyForColumn(table as TableInfo, x)?.columns?.length == 1,
];