UNPKG

@launchql/migrate

Version:
98 lines (90 loc) 3.56 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.writeSqitchPlan = exports.writeSqitchFiles = void 0; const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); const writeSqitchFiles = (rows, opts) => { rows.forEach((row) => writeVerify(row, opts)); rows.forEach((row) => writeRevert(row, opts)); rows.forEach((row) => writeDeploy(row, opts)); }; exports.writeSqitchFiles = writeSqitchFiles; const ordered = (arr) => { if (!arr) return []; return arr.sort((a, b) => a.length - b.length || a.localeCompare(b)); }; const writeDeploy = (row, opts) => { const deploy = opts.replacer(row.deploy); const dir = path_1.default.dirname(deploy); const prefix = path_1.default.join(opts.outdir, opts.name, 'deploy'); const actualDir = path_1.default.resolve(prefix, dir); const actualFile = path_1.default.resolve(prefix, `${deploy}.sql`); fs_1.default.mkdirSync(actualDir, { recursive: true }); const content = `-- Deploy: ${deploy} to pg -- made with <3 @ launchql.com ${opts.replacer(ordered(row?.deps) .map((dep) => `-- requires: ${dep}`) .join('\n') || '')} BEGIN; ${opts.replacer(row.content)} COMMIT; `; fs_1.default.writeFileSync(actualFile, content); }; const writeVerify = (row, opts) => { const deploy = opts.replacer(row.deploy); const dir = path_1.default.dirname(deploy); const prefix = path_1.default.join(opts.outdir, opts.name, 'verify'); const actualDir = path_1.default.resolve(prefix, dir); const actualFile = path_1.default.resolve(prefix, `${deploy}.sql`); fs_1.default.mkdirSync(actualDir, { recursive: true }); const content = opts.replacer(`-- Verify: ${deploy} on pg BEGIN; ${opts.replacer(row.verify)} COMMIT; `); fs_1.default.writeFileSync(actualFile, content); }; const writeRevert = (row, opts) => { const deploy = opts.replacer(row.deploy); const dir = path_1.default.dirname(deploy); const prefix = path_1.default.join(opts.outdir, opts.name, 'revert'); const actualDir = path_1.default.resolve(prefix, dir); const actualFile = path_1.default.resolve(prefix, `${deploy}.sql`); fs_1.default.mkdirSync(actualDir, { recursive: true }); const content = `-- Revert: ${deploy} from pg BEGIN; ${opts.replacer(row.revert)} COMMIT; `; fs_1.default.writeFileSync(actualFile, content); }; const writeSqitchPlan = (rows, opts) => { const dir = path_1.default.resolve(path_1.default.join(opts.outdir, opts.name)); fs_1.default.mkdirSync(dir, { recursive: true }); const date = () => '2017-08-11T08:11:51Z'; // stubbed timestamp const duplicates = {}; const plan = opts.replacer(`%syntax-version=1.0.0 %project=launchql-extension-name %uri=launchql-extension-name ${rows .map((row) => { if (duplicates[row.deploy]) { console.log('DUPLICATE ' + row.deploy); return ''; } duplicates[row.deploy] = true; if (row.deps?.length) { return `${row.deploy} [${row.deps.join(' ')}] ${date()} launchql <launchql@5b0c196eeb62> # add ${row.name}`; } return `${row.deploy} ${date()} launchql <launchql@5b0c196eeb62> # add ${row.name}`; }) .join('\n')} `); fs_1.default.writeFileSync(path_1.default.join(dir, 'sqitch.plan'), plan); }; exports.writeSqitchPlan = writeSqitchPlan;