UNPKG

dbmaster-cli

Version:

Tool for converting tables between Fifa Soccer Games

82 lines (81 loc) 3.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CompareFifaConfig = void 0; const fifa_config_factory_1 = require("./fifa-config-factory"); class CompareFifaConfig { constructor(fifaFirst, fifaSecond) { this.fifaFirst = fifaFirst; this.fifaSecond = fifaSecond; this.configFirst = fifa_config_factory_1.fifaConfigFactory(this.fifaFirst); this.configSecond = fifa_config_factory_1.fifaConfigFactory(this.fifaSecond); } printDiffColumns(table) { const { bothTables, firstTable, secondTable } = this.compareTableDefinition(table); const data = [...bothTables, ...firstTable, ...secondTable].sort().reduce((r, field) => ({ ...r, [field]: { [this.fifaFirst]: firstTable.includes(field) || bothTables.includes(field), [this.fifaSecond]: secondTable.includes(field) || bothTables.includes(field) } }), {}); console.table(data, [this.fifaFirst, this.fifaSecond]); } printDiffDefaults(table) { this.printDiffTable(table, 'default'); } printDiffDatatype(table) { this.printDiffTable(table, 'type'); } printDiffRange(table) { this.printDiffTable(table, 'range', (valueFirst, valueSecond) => (valueFirst && valueSecond && (valueFirst.min !== valueSecond.min || valueFirst.max !== valueFirst.max)) || Boolean(!valueFirst && valueSecond) || Boolean(valueFirst && !valueSecond)); } printDiffOrder(table) { this.printDiffTable(table, 'order'); } compareTableDefinition(table) { const tableFirst = this.configFirst[table]; const tableSecond = this.configSecond[table]; const bothTables = tableFirst .filter((field) => tableSecond.map((f) => f.name).includes(field.name)) .map((f) => f.name) .sort(); const firstTable = tableFirst .filter((field) => !bothTables.includes(field.name)) .map((f) => f.name) .sort(); const secondTable = tableSecond .filter((field) => !bothTables.includes(field.name)) .map((f) => f.name) .sort(); return { bothTables, firstTable, secondTable }; } printDiffTable(table, mode, diffFn) { const { bothTables, firstTable, secondTable } = this.compareTableDefinition(table); const tableFirst = this.configFirst[table]; const tableSecond = this.configSecond[table]; const data = [...bothTables, ...firstTable, ...secondTable].sort().reduce((r, field) => { const valueFirst = firstTable.includes(field) || bothTables.includes(field) ? tableFirst.find((f) => f.name === field)[mode] : undefined; const valueSecond = secondTable.includes(field) || bothTables.includes(field) ? tableSecond.find((f) => f.name === field)[mode] : undefined; return { ...r, [field]: { [this.fifaFirst]: valueFirst, [this.fifaSecond]: valueSecond, diff: diffFn ? diffFn(valueFirst, valueSecond) : valueFirst !== valueSecond } }; }, {}); console.table(data, [this.fifaFirst, this.fifaSecond, 'diff']); } } exports.CompareFifaConfig = CompareFifaConfig;