Skip to main content

Class: DataBackupService

Defined in: electron/services/database/DataBackupService.ts:69

Provides high-level database backup and restore operations with diagnostics.

Constructors

Constructor

new DataBackupService(config: DataBackupServiceConfig): DataBackupService

Defined in: electron/services/database/DataBackupService.ts:574

Parameters

config

DataBackupServiceConfig

Returns

DataBackupService

Properties

databaseService

private readonly databaseService: DatabaseService

Defined in: electron/services/database/DataBackupService.ts:70


eventEmitter

private readonly eventEmitter: TypedEventBus<UptimeEvents>

Defined in: electron/services/database/DataBackupService.ts:72


logger

private readonly logger: BaseLogger

Defined in: electron/services/database/DataBackupService.ts:74


databaseFileOperationInProgress

private databaseFileOperationInProgress: string | null = null

Defined in: electron/services/database/DataBackupService.ts:76


downloadDatabaseBackupSingleFlight()

private readonly downloadDatabaseBackupSingleFlight: () => Promise<DatabaseBackupResult>

Defined in: electron/services/database/DataBackupService.ts:78

Returns

Promise<DatabaseBackupResult>

Methods

withExclusiveDatabaseFileOperation()

private withExclusiveDatabaseFileOperation<T>(operationName: string, operation: () => Promise<T>): Promise<T>

Defined in: electron/services/database/DataBackupService.ts:91

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:109

Returns

Promise<DatabaseBackupResult>


saveDatabaseBackupToPath()

saveDatabaseBackupToPath(targetPath: string): Promise<DatabaseBackupMetadata>

Defined in: electron/services/database/DataBackupService.ts:126

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:

  1. Creates a consistent snapshot via VACUUM INTO in a temp directory,
  2. Copies the snapshot into the destination directory under a temp name,
  3. Swaps the destination file atomically (rename with a backup fallback).

computeFileChecksum()

private computeFileChecksum(filePath: string): Promise<string>

Defined in: electron/services/database/DataBackupService.ts:207

Parameters

filePath

string

Returns

Promise<string>


replaceFileAtomicallyWithBackup()

private replaceFileAtomicallyWithBackup(args: { sourcePath: string; targetPath: string; }): Promise<void>

Defined in: electron/services/database/DataBackupService.ts:235

Parameters

args
sourcePath

string

targetPath

string

Returns

Promise<void>


downloadDatabaseBackupImpl()

private downloadDatabaseBackupImpl(): Promise<DatabaseBackupResult>

Defined in: electron/services/database/DataBackupService.ts:266

eslint-enable security/detect-non-literal-fs-filename -- Re-enable after user-path backup save helpers.

Returns

Promise<DatabaseBackupResult>


restoreDatabaseBackup()

restoreDatabaseBackup(payload: DatabaseRestorePayload): Promise<DatabaseRestoreResult>

Defined in: electron/services/database/DataBackupService.ts:338

Parameters

payload

DatabaseRestorePayload

Returns

Promise<DatabaseRestoreResult>


applyDatabaseBackupResult()

applyDatabaseBackupResult(backup: DatabaseBackupResult): Promise<DatabaseBackupMetadata>

Defined in: electron/services/database/DataBackupService.ts:499

Parameters

backup

DatabaseBackupResult

Returns

Promise<DatabaseBackupMetadata>