@sugarcube/plugin-sql
Version:
Import and export Sugarcube data and queries from and to SQL databases.
108 lines (94 loc) • 3.4 kB
JavaScript
;
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;