dbmaster-cli
Version:
Tool for converting tables between Fifa Soccer Games
48 lines (47 loc) • 2.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.actionFactory = void 0;
const fs_1 = require("fs");
const path_1 = require("path");
const interfaces_1 = require("./interfaces");
const stream_builder_1 = require("./stream-builder");
exports.actionFactory = async (opts) => {
const list = [];
return new Promise(async (resolve, reject) => {
const exists = fs_1.existsSync(path_1.join(opts.input.folder, `${opts.table}.txt`));
if (!exists) {
resolve([]);
}
else {
let str = new stream_builder_1.StreamBuilder(opts.input.folder, opts.table, opts.input.fields);
let fields = opts.input.fields;
for (const action of opts.actions) {
switch (action.type) {
case interfaces_1.ActionType.ActionFilter:
str = str.actionFilter(action.filterFn);
break;
case interfaces_1.ActionType.ActionValidate:
str = str.actionValidate(fields);
break;
case interfaces_1.ActionType.ActionExtendContract:
str = str.actionExtendContract(fields);
break;
case interfaces_1.ActionType.ActionAppendDefault:
fields = opts.output ? opts.output.fields : opts.input.fields;
str = str.actionAppendDefault(fields);
break;
case interfaces_1.ActionType.ActionOnData:
str = str.actionOnData(action.onDataFn);
break;
default:
break;
}
}
str = str.onData((buffer) => list.push(JSON.parse(buffer.toString())));
if (opts.output) {
str = str.actionWrite(opts.output.folder, opts.output.fields, opts.output.format);
}
str = str.onFinish(() => resolve(list)).onError(() => reject(list));
}
});
};