UNPKG

@sugarcube/plugin-sql

Version:

Import and export Sugarcube data and queries from and to SQL databases.

108 lines (94 loc) 3.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.instruments = exports.plugins = void 0; var _fp = require("lodash/fp"); var _core = require("@sugarcube/core"); var _schemaMigrate = _interopRequireDefault(require("./plugins/schema-migrate")); var _queriesExport = _interopRequireDefault(require("./plugins/queries-export")); var _queriesImport = _interopRequireDefault(require("./plugins/queries-import")); var _import = _interopRequireDefault(require("./plugins/import")); var _export = _interopRequireDefault(require("./plugins/export")); var _instrument = _interopRequireDefault(require("./instruments/instrument")); var _assertions = require("./assertions"); var _db = require("./db"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const { liftManyA2 } = _core.plugin; const assertEngine = (0, _assertions.assertCfgOptions)("sql.engine", ["sqlite", "postgres"]); const plugins = { sql_schema_migrate: liftManyA2([assertEngine, _schemaMigrate.default]), sql_queries_export: liftManyA2([assertEngine, _queriesExport.default]), sql_queries_import: liftManyA2([assertEngine, _queriesImport.default]), sql_import: liftManyA2([assertEngine, _import.default]), sql_export: liftManyA2([assertEngine, _export.default]) }; exports.plugins = plugins; const instruments = { sql_instrument: _instrument.default }; exports.instruments = instruments; const queryPlugins = (0, _fp.flow)([_fp.keys, (0, _fp.intersection)(["sql_queries_export", "sql_queries_import"]), ps => (0, _fp.pick)(ps, plugins), _fp.values])(plugins); // Arguments common to all plugins. (0, _fp.forEach)(p => { // eslint-disable-next-line no-param-reassign p.argv = (0, _fp.merge)({ "sql.debug": { type: "boolean", default: "false", desc: "Enable tracing mode. Prints verbose debugging information." }, "sql.engine": { type: "string", nargs: 1, default: "sqlite", desc: "The database engine to use. Can be either postgres or sqlite." }, "sql.database": { type: "string", nargs: 1, default: "sugarcube", desc: "The name of the database. If the engine is sqlite specify the path to the database file." }, "sql.host": { type: "string", nargs: 1, default: "localhost", desc: "The host name of the database server. Only valid if the engine isn't sqlite." }, "sql.port": { type: "number", nargs: 1, default: 5432, desc: "The port of the database server. Only valid if the engine isn't sqlite." }, "sql.user": { type: "string", nargs: 1, desc: "The user of the database. Only valid if the engine isn't sqlite." }, "sql.password": { type: "string", nargs: 1, desc: "The password of the database. Only valid if the engine isn't sqlite." } }, p.argv); }, (0, _fp.values)(plugins)); (0, _fp.forEach)(p => { // eslint-disable-next-line no-param-reassign p.argv = (0, _fp.merge)({ "sql.query_fields": { type: "array", default: [], desc: "Extra fields to when importing and exporting queries." } }, p.argv); }, queryPlugins); var _default = { plugins, instruments, connectSqlite: _db.connectSqlite, connectPostgres: _db.connectPostgres }; exports.default = _default;