lite-ui-sql-parser
Version:
simple node sql parser
79 lines (70 loc) • 2.39 kB
JavaScript
(function (global, factory) {
if (typeof define === "function" && define.amd) {
define(["exports", "./column", "./index-definition", "./tables", "./expr", "./util"], factory);
} else if (typeof exports !== "undefined") {
factory(exports, require("./column"), require("./index-definition"), require("./tables"), require("./expr"), require("./util"));
} else {
var mod = {
exports: {}
};
factory(mod.exports, global.column, global.indexDefinition, global.tables, global.expr, global.util);
global.alter = mod.exports;
}
})(typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : this, function (_exports, _column, _indexDefinition, _tables, _expr, _util) {
"use strict";
Object.defineProperty(_exports, "__esModule", {
value: true
});
_exports.alterToSQL = alterToSQL;
_exports.alterExprToSQL = alterExprToSQL;
function alterToSQL(stmt) {
const {
type,
table,
expr = []
} = stmt;
const action = (0, _util.toUpper)(type);
const tableName = (0, _tables.tablesToSQL)(table);
const exprList = expr.map(_expr.exprToSQL);
const result = [action, 'TABLE', tableName, exprList.join(', ')];
return result.filter(_util.hasVal).join(' ');
}
function alterExprToSQL(expr) {
const {
action,
if_not_exists: ifNotExists,
keyword,
resource
} = expr;
const actionUpper = (0, _util.toUpper)(action);
const keyWordUpper = (0, _util.toUpper)(keyword);
const ifNotExistsUpper = (0, _util.toUpper)(ifNotExists);
let name = '';
let dataType = '';
switch (resource) {
case 'column':
dataType = (0, _column.columnDefinitionToSQL)(expr);
break;
case 'index':
dataType = (0, _indexDefinition.indexTypeAndOptionToSQL)(expr);
dataType = dataType.filter(_util.hasVal).join(' ');
name = expr[resource];
break;
case 'table':
name = (0, _util.identifierToSql)(expr[resource]);
break;
case 'algorithm':
case 'lock':
name = `= ${expr[resource]}`;
break;
default:
break;
}
const alterArray = [actionUpper];
alterArray.push(keyWordUpper);
alterArray.push(ifNotExistsUpper);
alterArray.push(name);
alterArray.push(dataType);
return alterArray.filter(_util.hasVal).join(' ');
}
});