node-sql-parser
Version:
simple node sql parser
89 lines (88 loc) • 2.91 kB
JavaScript
(function (global, factory) {
if (typeof define === "function" && define.amd) {
define(["exports", "./expr", "./limit", "./tables", "./util"], factory);
} else if (typeof exports !== "undefined") {
factory(exports, require("./expr"), require("./limit"), require("./tables"), require("./util"));
} else {
var mod = {
exports: {}
};
factory(mod.exports, global.expr, global.limit, global.tables, global.util);
global.show = mod.exports;
}
})(typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : this, function (_exports, _expr, _limit, _tables, _util) {
"use strict";
Object.defineProperty(_exports, "__esModule", {
value: true
});
_exports.showToSQL = showToSQL;
function showEventToSQL(showEventExpr) {
const {
in: inClause,
from,
limit
} = showEventExpr;
return [(0, _util.commonOptionConnector)('IN', _util.literalToSQL, inClause && inClause.right), (0, _util.commonOptionConnector)('FROM', _tables.tablesToSQL, from), (0, _limit.limitToSQL)(limit)].filter(_util.hasVal).join(' ');
}
function showLikeAndWhereToSQL(showCharacterSetExpr) {
const {
expr
} = showCharacterSetExpr;
if (!expr) return;
const {
op
} = expr;
if ((0, _util.toUpper)(op) === 'LIKE') return (0, _util.commonOptionConnector)('LIKE', _util.literalToSQL, expr.right);
return (0, _util.commonOptionConnector)('WHERE', _expr.exprToSQL, expr);
}
function showGrantsForUser(showGrantsForExpr) {
const {
for: forExpr
} = showGrantsForExpr;
if (!forExpr) return;
const {
user,
host,
role_list
} = forExpr;
let userAndHost = `'${user}'`;
if (host) userAndHost += `@'${host}'`;
return ['FOR', userAndHost, role_list && 'USING', role_list && role_list.map(role => `'${role}'`).join(', ')].filter(_util.hasVal).join(' ');
}
function showToSQL(showExpr) {
let {
keyword
} = showExpr;
const {
suffix
} = showExpr;
let str = '';
switch ((0, _util.toUpper)(keyword)) {
case 'BINLOG':
str = showEventToSQL(showExpr);
break;
case 'CHARACTER':
case 'COLLATION':
str = showLikeAndWhereToSQL(showExpr);
break;
case 'COLUMNS':
case 'INDEXES':
case 'INDEX':
str = (0, _util.commonOptionConnector)('FROM', _tables.tablesToSQL, showExpr.from);
break;
case 'GRANTS':
str = showGrantsForUser(showExpr);
break;
case 'CREATE':
str = (0, _util.commonOptionConnector)('', _tables.tableToSQL, showExpr[suffix]);
break;
case 'VAR':
str = (0, _expr.varToSQL)(showExpr.var);
keyword = '';
break;
default:
break;
}
return ['SHOW', (0, _util.toUpper)(keyword), (0, _util.toUpper)(suffix), str].filter(_util.hasVal).join(' ');
}
});