UNPKG

@fewer/adapter-postgres

Version:

A Fewer database adapter to connect to Postgres

64 lines 2.08 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const squel_1 = __importDefault(require("./squel")); function getTypeName(type) { // If there is no config, then we only have the name: if (!type.config) return type.name; switch (type.name) { case 'char': case 'varchar': { const config = type.config; if (config.length) { return `${type.name}(${config.length})`; } return type.name; } case 'numeric': case 'decimal': { const config = type.config; if (config.scale) { return `${type.name}(${config.precision}, ${config.scale})`; } if (config.precision) { return `${type.name}(${config.precision})`; } return type.name; } case 'array': { return `${getTypeName(type.config.subtype)}[]`; } default: return type.name; } } function createTable(operation) { const create = squel_1.default.create(operation.options); create.table(operation.name); for (const [columnName, columnType] of Object.entries(operation.columns)) { const typeName = getTypeName(columnType); create.field(columnName, typeName, columnType.config); } return create.toString(); } function dropTable(operation) { return squel_1.default.dropTable(operation.name).toString(); } function migrate(migration) { const sqls = migration.operations.map(operation => { switch (operation.type) { case 'createTable': return createTable(operation); case 'dropTable': return dropTable(operation); default: return null; } }); return sqls.filter(Boolean).join('; '); } exports.default = migrate; //# sourceMappingURL=migrate.js.map