UNPKG

epic-formulae

Version:

Simple data store to house epic formulae

35 lines (34 loc) 1.23 kB
"use strict"; 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' }];