ravendb
Version:
RavenDB client for Node.js
63 lines • 3.06 kB
JavaScript
import { CONSTANTS } from "../../Constants.js";
import { StringUtil } from "../../Utility/StringUtil.js";
import { basename, extname, resolve } from "node:path";
export class BackupUtils {
// eslint-disable-next-line @typescript-eslint/no-empty-function
constructor() {
// empty
}
static LEGACY_INCREMENTAL_BACKUP_EXTENSION = ".ravendb-incremental-dump";
static LEGACY_FULL_BACKUP_EXTENSION = ".ravendb-full-dump";
static BACKUP_FILE_SUFFIXES = [
BackupUtils.LEGACY_INCREMENTAL_BACKUP_EXTENSION,
BackupUtils.LEGACY_FULL_BACKUP_EXTENSION,
CONSTANTS.Documents.PeriodicBackup.INCREMENTAL_BACKUP_EXTENSION,
CONSTANTS.Documents.PeriodicBackup.ENCRYPTED_INCREMENTAL_BACKUP_EXTENSION,
CONSTANTS.Documents.PeriodicBackup.FULL_BACKUP_EXTENSION,
CONSTANTS.Documents.PeriodicBackup.ENCRYPTED_FULL_BACKUP_EXTENSION
];
static isFullBackupOrSnapshot(extension) {
return BackupUtils.isSnapshot(extension) || BackupUtils.isFullBackup(extension);
}
static isFullBackup(extension) {
return StringUtil.equalsIgnoreCase(CONSTANTS.Documents.PeriodicBackup.FULL_BACKUP_EXTENSION, extension)
|| StringUtil.equalsIgnoreCase(CONSTANTS.Documents.PeriodicBackup.ENCRYPTED_FULL_BACKUP_EXTENSION, extension);
}
static isSnapshot(extension) {
return StringUtil.equalsIgnoreCase(CONSTANTS.Documents.PeriodicBackup.SNAPSHOT_EXTENSION, extension)
|| StringUtil.equalsIgnoreCase(CONSTANTS.Documents.PeriodicBackup.ENCRYPTED_FULL_BACKUP_EXTENSION, extension);
}
static isIncrementalBackupFile(extension) {
return StringUtil.equalsIgnoreCase(CONSTANTS.Documents.PeriodicBackup.INCREMENTAL_BACKUP_EXTENSION, extension)
|| StringUtil.equalsIgnoreCase(CONSTANTS.Documents.PeriodicBackup.ENCRYPTED_INCREMENTAL_BACKUP_EXTENSION, extension)
|| StringUtil.equalsIgnoreCase(BackupUtils.LEGACY_INCREMENTAL_BACKUP_EXTENSION, extension);
}
static comparator(o1, o2, mtimeProvider) {
const baseName1 = basename(o1, extname(o1));
const baseName2 = basename(o2, extname(o2));
if (baseName1 !== baseName2) {
return baseName1.localeCompare(baseName2);
}
const extension1 = extname(o1);
const extension2 = extname(o2);
if (extension1 !== extension2) {
return periodicBackupFileExtensionComparator(o1, o2);
}
const lastModified1 = mtimeProvider(o1);
const lastModified2 = mtimeProvider(o2);
return lastModified1 - lastModified2;
}
}
export function periodicBackupFileExtensionComparator(o1, o2) {
if (resolve(o1) === resolve(o2)) {
return 0;
}
if (StringUtil.equalsIgnoreCase(extname(o1), "." + CONSTANTS.Documents.PeriodicBackup.SNAPSHOT_EXTENSION)) {
return -1;
}
if (StringUtil.equalsIgnoreCase(extname(o1), "." + CONSTANTS.Documents.PeriodicBackup.FULL_BACKUP_EXTENSION)) {
return -1;
}
return 1;
}
//# sourceMappingURL=BackupUtils.js.map