UNPKG

@odyssoft/tsorm

Version:
55 lines (54 loc) 2.28 kB
"use strict"; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Schema = void 0; const promise_1 = require("mysql2/promise"); const model_1 = require("./model"); const utils_1 = require("./utils"); const view_1 = require("./view"); class Schema { constructor(name, _a) { var { create } = _a, connection = __rest(_a, ["create"]); this.queries = []; this.query = (sql) => this.connection.query(sql); this.name = name; this.connection = (0, promise_1.createPool)(Object.assign(Object.assign({}, connection), { multipleStatements: true })); if (create) { this.connection .query(`CREATE DATABASE IF NOT EXISTS \`${name}\`; USE \`${name}\`;`) .then(() => { if (this.queries.length) { this.connection.query(this.queries.join(';')); } }) .catch((error) => { this.connection.end(); console.error({ error }); }); } } createModel(name, keys) { const Keys = Object.keys(keys); const primaries = Keys.filter((k) => keys[k].primaryKey).map((k) => `\`${k}\``); this.queries.push(`CREATE TABLE IF NOT EXISTS \`${name}\` (${Keys.map((key) => (0, utils_1.mapKey)(key, keys[key])).join(', ')}${primaries.length ? `, PRIMARY KEY (${primaries.join(', ')})` : ''})`); return (0, model_1.createModel)(name, keys, this.connection, this.name); } createView(name, keys, query) { this.queries.push(`CREATE OR REPLACE VIEW \`${name}\` AS ${query}`); return (0, view_1.createView)(name, keys, this.connection, this.name); } close() { this.connection.end(); } } exports.Schema = Schema;