dbmaster-cli
Version:
Tool for converting tables between Fifa Soccer Games
59 lines (58 loc) • 2.98 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.minimizePlayernames = void 0;
const actions_1 = require("../actions");
const fifa_config_1 = require("../fifa-config");
const interfaces_1 = require("../interfaces");
const writePlayers = async (table, fields, reindexMap, inputFolder, outputFolder) => {
const a = true;
return new Promise(async (resolve, reject) => new actions_1.StreamBuilder(inputFolder, table, fields)
.actionApplyPlayernames(reindexMap)
.actionWrite(outputFolder, fields)
.onFinish(() => resolve())
.onError(() => resolve()));
};
const writePlayernames = async (table, fields, inputFolder, outputFolder) => {
const range = fields.find((f) => f.name === interfaces_1.PLAYERNAMES_PRIMARY_COLUMN).range;
const reindexMap = [];
let minBefore = range.max;
let maxBefore = range.min;
let minAfter = minBefore;
let maxAfter = maxBefore;
return new Promise(async (resolve, reject) => new actions_1.StreamBuilder(inputFolder, table, fields)
.actionOnData((data) => {
const id = data[interfaces_1.PLAYERNAMES_PRIMARY_COLUMN];
minBefore = id < minBefore ? id : minBefore;
maxBefore = id > maxBefore ? id : maxBefore;
})
.actionReindex(range.min)
.actionOnData((data) => reindexMap.push(data))
.actionReindexMap2RawData(interfaces_1.PLAYERNAMES_PRIMARY_COLUMN)
.actionOnData((data) => {
const id = data[interfaces_1.PLAYERNAMES_PRIMARY_COLUMN];
minAfter = id < minAfter ? id : minAfter;
maxAfter = id > maxAfter ? id : maxAfter;
})
.actionWrite(outputFolder, fields)
.onFinish(() => resolve({ reindexMap, minBefore, maxBefore, minAfter, maxAfter }))
.onError(() => reject({ reindexMap, minBefore, maxBefore, minAfter, maxAfter })));
};
/**
* @description remove holes in tables 'playernames' and 'dcplayernames'
*/
exports.minimizePlayernames = async (fifa, inputFolder, outputFolder) => {
const config = fifa_config_1.fifaConfigFactory(fifa);
const playernamesStats = await writePlayernames(interfaces_1.Table.PlayerNames, config.playernames, inputFolder, outputFolder);
const dcplayernamesStats = await writePlayernames(interfaces_1.Table.DcPlayerNames, config.dcplayernames, inputFolder, outputFolder);
await writePlayers(interfaces_1.Table.Players, config.players, [...playernamesStats.reindexMap, ...dcplayernamesStats.reindexMap], inputFolder, outputFolder);
console.table({
playernames: {
before: { min: playernamesStats.minBefore, max: playernamesStats.maxBefore },
after: { min: playernamesStats.minAfter, max: playernamesStats.maxAfter }
},
dcplayernames: {
before: { min: dcplayernamesStats.minBefore, max: dcplayernamesStats.maxBefore },
after: { min: dcplayernamesStats.minAfter, max: dcplayernamesStats.maxAfter }
}
});
};