UNPKG

dbmaster-cli

Version:

Tool for converting tables between Fifa Soccer Games

59 lines (58 loc) 2.98 kB
"use strict"; 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 } } }); };