mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-26 16:46:00 +00:00
virtual references working
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { DatabaseInfo, TableInfo } from 'dbgate-types';
|
||||
import { DatabaseInfo, TableInfo, ApplicationDefinition } from 'dbgate-types';
|
||||
import _flatten from 'lodash/flatten';
|
||||
|
||||
export function addTableDependencies(db: DatabaseInfo): DatabaseInfo {
|
||||
@@ -90,3 +90,31 @@ function fillDatabaseExtendedInfo(db: DatabaseInfo): DatabaseInfo {
|
||||
export function extendDatabaseInfo(db: DatabaseInfo): DatabaseInfo {
|
||||
return fillDatabaseExtendedInfo(addTableDependencies(db));
|
||||
}
|
||||
|
||||
export function extendDatabaseInfoFromApps(db: DatabaseInfo, apps: ApplicationDefinition[]): DatabaseInfo {
|
||||
if (!db || !apps) return db;
|
||||
const dbExt = {
|
||||
...db,
|
||||
tables: db.tables.map(table => ({
|
||||
...table,
|
||||
foreignKeys: [
|
||||
...(table.foreignKeys || []),
|
||||
..._flatten(apps.map(app => app.virtualReferences || []))
|
||||
.filter(fk => fk.pureName == table.pureName && fk.schemaName == table.schemaName)
|
||||
.map(fk => ({ ...fk, isVirtual: true })),
|
||||
],
|
||||
})),
|
||||
};
|
||||
return addTableDependencies(dbExt);
|
||||
}
|
||||
|
||||
export function isTableColumnUnique(table: TableInfo, column: string) {
|
||||
if (table.primaryKey && table.primaryKey.columns.length == 1 && table.primaryKey.columns[0].columnName == column) {
|
||||
return true;
|
||||
}
|
||||
const uqs = [...(table.uniques || []), ...(table.indexes || []).filter(x => x.isUnique)];
|
||||
if (uqs.find(uq => uq.columns.length == 1 && uq.columns[0].columnName == column)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user