UNPKG

lite-ui-sql-parser

Version:
80 lines (69 loc) 2.61 kB
(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(' '); } });