dbmaster-cli
Version:
Tool for converting tables between Fifa Soccer Games
82 lines (81 loc) • 3.49 kB
JavaScript
;
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;