UNPKG

pg-dump-restore

Version:

Nodejs wrapper around the pg_dump and pg_restore

96 lines (95 loc) 5.28 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.pgDump = void 0; const common_1 = require("./common"); const execa_1 = __importDefault(require("execa")); const pgDump = (connectionOptions, dumpOptions) => __awaiter(void 0, void 0, void 0, function* () { const os = process.platform; const { connectionArgs, sslMode } = (0, common_1.getConnectionArgs)(connectionOptions); const { filePath, format = common_1.FormatEnum.Custom, dataOnly, blobs, noBlobs, clean, create, extensionPattern = [], encoding, jobs, schemaPattern = [], excludeSchemaPattern = [], noOwner, noReconnect, schemaOnly, tablePattern = [], excludeTablePattern = [], verbose, noAcl, compress, binaryUpgrade, columnInserts, disableDollarQuoting, disableTriggers, enableRowSecurity, excludeTableDataPattern = [], extraFloatDigits, ifExists, includeForeignData, inserts, loadViaPartitionRoot, lockWaitTimeout, noComments, noPublications, noSecurityLabels, noSubscriptions, noSync, noSynchronizedSnapshots, noTableSpaces, noToastCompression, noUnloggedTableData, onConflictDoNothing, quoteAllIdentifiers, rowsPerInsert, sectionName = [], serializableDeferrable, snapshotName, strictNames, useSetSessionAuthorization, roleName, version, noPrivileges, } = dumpOptions; connectionArgs.push(`--format=${format}`); if (filePath) connectionArgs.push(`--file=${filePath}`); connectionArgs.push(...extensionPattern.map((item) => `--extension=${item}`)); if (encoding) connectionArgs.push(`--encoding=${encoding}`); if (jobs) connectionArgs.push(`--jobs=${jobs}`); connectionArgs.push(...schemaPattern.map((item) => `--schema=${item}`)); connectionArgs.push(...excludeSchemaPattern.map((item) => `--exclude-schema=${item}`)); connectionArgs.push(...tablePattern.map((item) => `--table=${item}`)); connectionArgs.push(...excludeTablePattern.map((item) => `--exclude-table=${item}`)); if (compress !== undefined) connectionArgs.push(`--compress=${compress}`); connectionArgs.push(...excludeTableDataPattern.map((item) => `--exclude-table-data=${item}`)); if (extraFloatDigits !== undefined) connectionArgs.push(`--extra-float-digits=${extraFloatDigits}`); if (includeForeignData) connectionArgs.push(`--include-foreign-data=${includeForeignData}`); if (lockWaitTimeout) connectionArgs.push(`--lock-wait-timeout=${lockWaitTimeout}`); if (rowsPerInsert !== undefined) connectionArgs.push(`--rows-per-insert=${rowsPerInsert}`); connectionArgs.push(...sectionName.map((item) => `--section=${item}`)); if (snapshotName) connectionArgs.push(`--snapshot=${snapshotName}`); if (roleName) connectionArgs.push(`--role=${roleName}`); const paramsMap = { blobs, clean, create, inserts, verbose, version, 'binary-upgrade': binaryUpgrade, 'column-inserts': columnInserts, 'data-only': dataOnly, 'disable-dollar-quoting': disableDollarQuoting, 'disable-triggers': disableTriggers, 'enable-row-security': enableRowSecurity, 'if-exists': ifExists, 'load-via-partition-root': loadViaPartitionRoot, 'no-acl': noAcl, 'no-blobs': noBlobs, 'no-comments': noComments, 'no-owner': noOwner, 'no-publications': noPublications, 'no-reconnect': noReconnect, 'no-security-labels': noSecurityLabels, 'no-subscriptions': noSubscriptions, 'no-sync': noSync, 'no-synchronized-snapshots': noSynchronizedSnapshots, 'no-tablespaces': noTableSpaces, 'no-toast-compression': noToastCompression, 'no-unlogged-table-data': noUnloggedTableData, 'no-privileges': noPrivileges, 'on-conflict-do-nothing': onConflictDoNothing, 'quote-all-identifiers': quoteAllIdentifiers, 'schema-only': schemaOnly, 'serializable-deferrable': serializableDeferrable, 'strict-names': strictNames, 'use-set-session-authorization': useSetSessionAuthorization, }; Object.keys(paramsMap).forEach((key) => { if (paramsMap[key]) connectionArgs.push(`--${key}`); }); const env = {}; if (sslMode) env.PGSSLMODE = sslMode; return yield (0, execa_1.default)(os == 'win32' ? 'pg_dump.exe' : 'pg_dump', connectionArgs, { env }); }); exports.pgDump = pgDump;