refactor: improve version comparison logic in health API

This commit is contained in:
Arunavo Ray
2025-06-17 15:11:05 +05:30
parent fbf3033455
commit 50972713a3

View File

@@ -58,7 +58,7 @@ export const GET: APIRoute = async () => {
latestVersion: latestVersion, latestVersion: latestVersion,
updateAvailable: latestVersion !== "unknown" && updateAvailable: latestVersion !== "unknown" &&
currentVersion !== "unknown" && currentVersion !== "unknown" &&
latestVersion !== currentVersion, compareVersions(currentVersion, latestVersion) < 0,
database: dbStatus, database: dbStatus,
recovery: recoveryStatus, recovery: recoveryStatus,
system: systemInfo, system: systemInfo,
@@ -174,6 +174,28 @@ function formatBytes(bytes: number): string {
return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i]; return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];
} }
/**
* Compare semantic versions
* Returns:
* -1 if v1 < v2
* 0 if v1 = v2
* 1 if v1 > v2
*/
function compareVersions(v1: string, v2: string): number {
const parts1 = v1.split('.').map(Number);
const parts2 = v2.split('.').map(Number);
for (let i = 0; i < Math.max(parts1.length, parts2.length); i++) {
const part1 = parts1[i] || 0;
const part2 = parts2[i] || 0;
if (part1 < part2) return -1;
if (part1 > part2) return 1;
}
return 0;
}
/** /**
* Check for the latest version from GitHub releases * Check for the latest version from GitHub releases
*/ */