@sugarcube/plugin-sql
Version:
Import and export Sugarcube data and queries from and to SQL databases.
60 lines (49 loc) • 1.66 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _fp = require("lodash/fp");
var _dashp = require("dashp");
var _core = require("@sugarcube/core");
var _db = require("../db");
const querySource = "query_type";
const plugin = async (envelope, {
cfg,
log,
stats
}) => {
const debug = (0, _fp.get)("sql.debug", cfg);
const engine = (0, _fp.get)("sql.engine", cfg);
const database = (0, _fp.get)("sql.database", cfg);
const host = (0, _fp.get)("sql.host", cfg);
const port = (0, _fp.get)("sql.port", cfg);
const user = (0, _fp.get)("sql.user", cfg);
const password = (0, _fp.get)("sql.password", cfg);
const queriesByType = _core.envelope.queriesByType(querySource, envelope);
let db;
if (engine === "postgres") db = (0, _db.connectPostgres)({
database,
host,
port,
user,
password,
debug
});
if (engine === "sqlite") db = (0, _db.connectSqlite)({
database: database === "sugarcube" ? `${database}.db` : database,
debug
}, log);
const queries = queriesByType.length === 0 ? await db.queries.listAll() : await (0, _dashp.flatmapP)(async queryType => {
const qs = await db.queries.listByType(queryType);
log.info(`Importing ${qs.length} queries of type '${queryType}'.`); // we merge the tags into the query object itself for backwards compatibility.
return qs;
}, queriesByType);
stats.count("queries", queries.length);
db.close();
return _core.envelope.concatQueries(queries, envelope);
};
plugin.argv = {};
plugin.desc = "Import queries into the pipeline.";
var _default = plugin;
exports.default = _default;