miniml
Version:
A minimal, embeddable semantic data modeling language for generating SQL queries from YAML model definitions. Inspired by LookML.
34 lines • 1.41 kB
JavaScript
export class SqlValidationError extends Error {
violations;
suggestions;
constructor(message, violations, suggestions) {
super(message);
this.violations = violations;
this.suggestions = suggestions;
this.name = 'SqlValidationError';
}
}
export function extractFieldReferencesFromNode(node, field_set) {
if (!node || typeof node !== 'object')
return;
if (node.type === 'column_ref') {
if (typeof node.column === 'string' && node.column !== '' && node.column !== '*')
field_set.add(node.column);
else if (typeof node.column === 'object' && node.column !== null &&
typeof node.column.expr === 'object' && typeof node.column.expr.value === 'string')
field_set.add(node.column.expr.value);
if (Array.isArray(node.subFields) && node.subFields.length > 0) {
const columnName = node.subFields[node.subFields.length - 1];
if (typeof columnName === 'string' && columnName !== '')
field_set.add(columnName);
}
}
for (const key in node) {
const value = node[key];
if (Array.isArray(value))
value.forEach(item => extractFieldReferencesFromNode(item, field_set));
else if (typeof value === 'object')
extractFieldReferencesFromNode(value, field_set);
}
}
//# sourceMappingURL=common.js.map