UNPKG

@vulcan-sql/extension-driver-ksqldb

Version:

ksqlDB driver for VulcanSQL

49 lines 1.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.convertSchemaToColumns = exports.buildSQL = exports.isNoOP = exports.addLimit = exports.removeEndingSemiColon = void 0; const lodash_1 = require("lodash"); const isNullOrUndefine = (value) => (0, lodash_1.isUndefined)(value) || (0, lodash_1.isNull)(value); const removeEndingSemiColon = (sql) => { return sql.replace(/;([ \n]+)?$/, ''); }; exports.removeEndingSemiColon = removeEndingSemiColon; const addLimit = (sql, limit) => { if (isNullOrUndefine(limit)) return sql; return [sql, `LIMIT`, limit].join(' '); }; exports.addLimit = addLimit; // Check if there is no operations const isNoOP = (operations) => { if (!isNullOrUndefine(operations.limit)) return false; if (!isNullOrUndefine(operations.offset)) return false; return true; }; exports.isNoOP = isNoOP; const buildSQL = (sql, operations) => { if ((0, exports.isNoOP)(operations)) return sql; let builtSQL = ''; // ksqlDB currently does not support subquery // OFFSET is not supported, LIMIT syntax is supported >= ksqldb 0.24.0 // https://github.com/confluentinc/ksql/issues/745 builtSQL += (0, exports.removeEndingSemiColon)(sql); builtSQL = (0, exports.addLimit)(builtSQL, operations.limit); builtSQL += ';'; return builtSQL; }; exports.buildSQL = buildSQL; const convertSchemaToColumns = (schema) => { // schema example: "`PROFILEID` STRING, `LATITUDE` DOUBLE, `LONGITUDE` DOUBLE" return schema .replace(/`/g, '') .split(', ') .map((columnString) => { const [name, type] = columnString.split(' '); return { name: (0, lodash_1.startCase)((0, lodash_1.lowerCase)(name)), type }; }); }; exports.convertSchemaToColumns = convertSchemaToColumns; //# sourceMappingURL=sqlBuilder.js.map