lite-ui-sql-parser
Version:
simple node sql parser
80 lines (69 loc) • 2.61 kB
JavaScript
(function (global, factory) {
if (typeof define === "function" && define.amd) {
define(["exports", "./index-definition", "./column", "./constrain", "./tables", "./union", "./util"], factory);
} else if (typeof exports !== "undefined") {
factory(exports, require("./index-definition"), require("./column"), require("./constrain"), require("./tables"), require("./union"), require("./util"));
} else {
var mod = {
exports: {}
};
factory(mod.exports, global.indexDefinition, global.column, global.constrain, global.tables, global.union, global.util);
global.create = mod.exports;
}
})(typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : this, function (_exports, _indexDefinition, _column, _constrain, _tables, _union, _util) {
"use strict";
Object.defineProperty(_exports, "__esModule", {
value: true
});
_exports.createToSQL = createToSQL;
function createDefinitionToSQL(definition) {
if (!definition) return [];
const {
resource
} = definition;
switch (resource) {
case 'column':
return (0, _column.columnDefinitionToSQL)(definition);
case 'index':
return (0, _indexDefinition.indexDefinitionToSQL)(definition);
case 'constraint':
return (0, _constrain.constraintDefinitionToSQL)(definition);
default:
throw new Error(`unknow resource = ${resource} type`);
}
}
function createToSQL(stmt) {
const {
type,
keyword,
table,
like,
as,
temporary,
if_not_exists: ifNotExists,
create_definitions: createDefinition,
table_options: tableOptions,
ignore_replace: ignoreReplace,
query_expr: queryExpr
} = stmt;
const sql = [(0, _util.toUpper)(type), (0, _util.toUpper)(temporary), (0, _util.toUpper)(keyword), (0, _util.toUpper)(ifNotExists), (0, _tables.tablesToSQL)(table)];
if (like) {
const {
type: likeType,
table: likeTable
} = like;
const likeTableName = (0, _tables.tablesToSQL)(likeTable);
sql.push((0, _util.toUpper)(likeType), likeTableName);
return sql.filter(_util.hasVal).join(' ');
}
if (createDefinition) {
sql.push(`(${createDefinition.map(createDefinitionToSQL).join(', ')})`);
}
if (tableOptions) {
sql.push(tableOptions.map(_tables.tableOptionToSQL).join(' '));
}
sql.push((0, _util.toUpper)(ignoreReplace), (0, _util.toUpper)(as));
if (queryExpr) sql.push((0, _union.unionToSQL)(queryExpr));
return sql.filter(_util.hasVal).join(' ');
}
});