This commit is contained in:
Jan Prochazka
2020-12-29 17:55:07 +01:00
parent ed11b9e5a1
commit 290acdb68a
3 changed files with 43 additions and 1 deletions

View File

@@ -9,7 +9,9 @@ import {
referenceIsConnecting,
mergeSelectsFromDesigner,
findQuerySource,
findDesignerFilterType,
} from './designerTools';
import { parseFilter } from 'dbgate-filterparser';
export class DesignerQueryDumper {
constructor(public designer: DesignerInfo, public components: DesignerComponent[]) {}
@@ -61,11 +63,35 @@ export class DesignerQueryDumper {
});
}
}
this.addConditions(select, component.tables);
}
return select;
}
addConditions(select: Select, tables: DesignerTableInfo[]) {
for (const column of this.designer.columns) {
if (!column.filter) continue;
const table = this.designer.tables.find((x) => x.designerId == column.designerId);
if (!tables.find((x) => x.designerId == table.designerId)) continue;
const condition = parseFilter(column.filter, findDesignerFilterType(column, this.designer));
if (condition) {
select.where = mergeConditions(
select.where,
_.cloneDeepWith(condition, (expr) => {
if (expr.exprType == 'placeholder')
return {
exprType: 'column',
columnName: column.columnName,
source: findQuerySource(this.designer, column.designerId),
};
})
);
}
}
}
run() {
let res: Select = null;
for (const component of this.components) {
@@ -148,6 +174,8 @@ export class DesignerQueryDumper {
}));
}
this.addConditions(res, topLevelTables);
return res;
}
}