epic-formulae
Version:
Simple data store to house epic formulae
35 lines (34 loc) • 1.23 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const core_1 = require("@oclif/core");
const sync_1 = require("csv-parse/sync");
const promises_1 = require("node:fs/promises");
const db_1 = require("../db");
const formula_1 = require("../models/formula");
class Load extends core_1.Command {
async run() {
const { args: { file } } = await this.parse(Load);
const data = await (0, promises_1.readFile)(file || '/dev/stdin', 'utf-8');
const rows = (0, sync_1.parse)(data, {
columns: true,
skipEmptyLines: true,
});
await (0, db_1.connect)();
await Promise.all(rows.map(async ({ text, metre, referent }) => formula_1.Formula.findOneAndUpdate({ text }, { text, metre, referent }, { upsert: true })));
await (0, db_1.disconnect)();
}
}
exports.default = Load;
Load.description = 'Load forumlae from a CSV file';
Load.examples = [
'formula load my-formulae.csv',
'./bin/example-stream | formula load',
];
Load.flags = {
'ignore-header': core_1.Flags.boolean({
char: 'i',
default: true,
description: 'Ignore header row in loaded file',
}),
};
Load.args = [{ name: 'file' }];