Class: DataBackupService
Defined in: electron/services/database/DataBackupService.ts:89
Provides high-level database backup and restore operations with diagnostics.
Constructors
Constructor
new DataBackupService(config: DataBackupServiceConfig): DataBackupService;
Defined in: electron/services/database/DataBackupService.ts:653
Parameters
config
Returns
DataBackupService
Properties
databaseService
private readonly databaseService: DatabaseService;
Defined in: electron/services/database/DataBackupService.ts:90
eventEmitter
private readonly eventEmitter: TypedEventBus<UptimeEvents>;
Defined in: electron/services/database/DataBackupService.ts:92
logger
private readonly logger: BaseLogger;
Defined in: electron/services/database/DataBackupService.ts:94
downloadDatabaseBackupSingleFlight
private readonly downloadDatabaseBackupSingleFlight: () => Promise<DatabaseBackupResult>;
Defined in: electron/services/database/DataBackupService.ts:96
Returns
Methods
withExclusiveDatabaseFileOperation()
private withExclusiveDatabaseFileOperation<T>(operationName: string, operation: () => Promise<T>): Promise<T>;
Defined in: electron/services/database/DataBackupService.ts:109
Executes an operation that temporarily closes/reinitializes the primary SQLite connection or replaces the database file.
Type Parameters
T
T
Parameters
operationName
string
operation
() => Promise<T>
Returns
Promise<T>
Remarks
These operations must not overlap. Concurrent execution can lead to:
- Closing the shared connection while another operation is using it,
- Partially replaced files being opened,
- Windows rename/locking issues.
downloadDatabaseBackup()
downloadDatabaseBackup(): Promise<DatabaseBackupResult>;
Defined in: electron/services/database/DataBackupService.ts:119
Returns
saveDatabaseBackupToPath()
saveDatabaseBackupToPath(targetPath: string): Promise<DatabaseBackupMetadata>;
Defined in: electron/services/database/DataBackupService.ts:134
Saves a SQLite database backup directly to disk.
Parameters
targetPath
string
Returns
Promise<DatabaseBackupMetadata>
Remarks
This avoids materializing the backup as a large in-memory Buffer. Internally it:
- Creates a consistent snapshot via
VACUUM INTOin a temp directory, - Copies the snapshot into the destination directory under a temp name,
- Swaps the destination file atomically (rename with a backup fallback).
computeFileChecksum()
private computeFileChecksum(filePath: string): Promise<string>;
Defined in: electron/services/database/DataBackupService.ts:241
Parameters
filePath
string
Returns
Promise<string>
replaceFileAtomicallyWithBackup()
private replaceFileAtomicallyWithBackup(args: {
sourcePath: string;
targetPath: string;
}): Promise<void>;
Defined in: electron/services/database/DataBackupService.ts:270
Parameters
args
sourcePath
string
targetPath
string
Returns
Promise<void>
downloadDatabaseBackupImpl()
private downloadDatabaseBackupImpl(): Promise<DatabaseBackupResult>;
Defined in: electron/services/database/DataBackupService.ts:364
Returns
restoreDatabaseBackup()
restoreDatabaseBackup(payload: DatabaseRestorePayload): Promise<DatabaseRestoreResult>;
Defined in: electron/services/database/DataBackupService.ts:436
Parameters
payload
Returns
Promise<DatabaseRestoreResult>
applyDatabaseBackupResult()
applyDatabaseBackupResult(backup: DatabaseBackupResult): Promise<DatabaseBackupMetadata>;
Defined in: electron/services/database/DataBackupService.ts:582