Skip to content

Commit

Permalink
Merge pull request #1203 from ebkr/update-all-query-performance
Browse files Browse the repository at this point in the history
Update all - query performance
  • Loading branch information
ebkr authored Feb 14, 2024
2 parents 2a29c60 + f43e248 commit 084e711
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 30 deletions.
16 changes: 14 additions & 2 deletions src/model/VersionNumber.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,12 @@ export default class VersionNumber implements ReactiveObjectConverterInterface {
} else {
throw Error(`VersionNumber: Number found was NaN. Received: ${splitNumbers}`);
}
})
});
// If successful, assign values.
this.major = numberArray[0];
this.minor = numberArray[1];
this.patch = numberArray[2];
} catch(e) {
} catch (e) {
// If an error was thrown, log reason.
return new VersionNumber('0.0.0');
}
Expand Down Expand Up @@ -68,4 +68,16 @@ export default class VersionNumber implements ReactiveObjectConverterInterface {
public isEqualOrNewerThan(version: VersionNumber): boolean {
return this.isEqualTo(version) || this.isNewerThan(version);
}

public compareToDescending(version: VersionNumber): number {
var majorCompare = version.major - this.major;
var minorCompare = version.minor - this.minor;
var patchCompare = version.patch - this.patch;

return majorCompare == 0
? minorCompare == 0
? patchCompare
: minorCompare
: majorCompare;
}
}
37 changes: 9 additions & 28 deletions src/r2mm/downloading/BetterThunderstoreDownloader.ts
Original file line number Diff line number Diff line change
Expand Up @@ -93,35 +93,16 @@ export default class BetterThunderstoreDownloader extends ThunderstoreDownloader
}

public getLatestOfAllToUpdate(mods: ManifestV2[], allMods: ThunderstoreMod[]): ThunderstoreCombo[] {
var depMap: Map<string, ThunderstoreCombo> = new Map();
const dependencies: ThunderstoreCombo[] = [];
mods.forEach(value => {
const tsMod = ModBridge.getThunderstoreModFromMod(value, allMods);
if (tsMod !== undefined) {
this.buildDependencySetUsingLatest(tsMod.getVersions()![0], allMods, dependencies);
return mods.filter(mod => !ModBridge.isCachedLatestVersion(mod))
.map(mod => ModBridge.getCachedThunderstoreModFromMod(mod))
.filter(value => value != undefined)
.map(mod => {
const latestVersion = mod!.getVersions().sort((a, b) => a.getVersionNumber().compareToDescending(b.getVersionNumber()))[0];
const combo = new ThunderstoreCombo();
combo.setMod(tsMod);
combo.setVersion(tsMod.getVersions()![0])
dependencies.push(combo);
}
});

// Keep array unique in case scenario happens where dependency X is picked up before X install listing.
dependencies.forEach(value => depMap.set(value.getMod().getFullName(), value));

dependencies.forEach(value => {
depMap.set(value.getMod().getFullName(), value);
});

return Array.from(depMap.values()).filter(value => {
const result = mods.find(value1 => {
return value1.getName() === value.getMod().getFullName();
});
if (result !== undefined) {
return !result.getVersionNumber().isEqualTo(value.getVersion().getVersionNumber());
}
return false;
});
combo.setMod(mod!);
combo.setVersion(latestVersion);
return combo;
})
}

public async downloadLatestOfAll(game: Game, mods: ManifestV2[], allMods: ThunderstoreMod[],
Expand Down

0 comments on commit 084e711

Please sign in to comment.