miniml
Version:
A minimal, embeddable semantic data modeling language for generating SQL queries from YAML model definitions. Inspired by LookML.
24 lines • 876 B
JavaScript
import pkg from "node-sql-parser";
const { Parser } = pkg;
import { extractFieldReferencesFromNode } from "./common.js";
export function extractFieldReferences(expression, model) {
if (!expression?.trim())
return [];
let ast;
try {
const parser = new Parser();
const wrappedSql = `SELECT * FROM dummy WHERE ${expression.trim()}`;
ast = parser.astify(wrappedSql, { database: model.dialect });
}
catch (error) {
return [];
}
const reference_fields = new Set();
if (ast && typeof ast === 'object') {
const selectStmt = Array.isArray(ast) ? ast[0] : ast;
if (selectStmt && typeof selectStmt === 'object' && 'where' in selectStmt)
extractFieldReferencesFromNode(selectStmt.where, reference_fields);
}
return Array.from(reference_fields);
}
//# sourceMappingURL=parse.js.map