feat(backup): add containerarchive-backed backup storage, restore, download, and pruning support
This commit is contained in:
@@ -20,8 +20,9 @@ export class BackupRepository extends BaseRepository {
|
||||
this.query(
|
||||
`INSERT INTO backups (
|
||||
service_id, service_name, filename, size_bytes, created_at,
|
||||
includes_image, platform_resources, checksum, schedule_id
|
||||
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,
|
||||
includes_image, platform_resources, checksum, schedule_id,
|
||||
snapshot_id, stored_size_bytes
|
||||
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
|
||||
[
|
||||
backup.serviceId,
|
||||
backup.serviceName,
|
||||
@@ -32,6 +33,8 @@ export class BackupRepository extends BaseRepository {
|
||||
JSON.stringify(backup.platformResources),
|
||||
backup.checksum,
|
||||
backup.scheduleId ?? null,
|
||||
backup.snapshotId ?? null,
|
||||
backup.storedSizeBytes ?? 0,
|
||||
]
|
||||
);
|
||||
|
||||
@@ -78,6 +81,14 @@ export class BackupRepository extends BaseRepository {
|
||||
return rows.map((row) => this.rowToBackup(row));
|
||||
}
|
||||
|
||||
getBySnapshotId(snapshotId: string): IBackup | null {
|
||||
const rows = this.query(
|
||||
'SELECT * FROM backups WHERE snapshot_id = ?',
|
||||
[snapshotId]
|
||||
);
|
||||
return rows.length > 0 ? this.rowToBackup(rows[0]) : null;
|
||||
}
|
||||
|
||||
private rowToBackup(row: any): IBackup {
|
||||
let platformResources: TPlatformServiceType[] = [];
|
||||
const platformResourcesRaw = row.platform_resources;
|
||||
@@ -94,7 +105,9 @@ export class BackupRepository extends BaseRepository {
|
||||
serviceId: Number(row.service_id),
|
||||
serviceName: String(row.service_name),
|
||||
filename: String(row.filename),
|
||||
snapshotId: row.snapshot_id ? String(row.snapshot_id) : undefined,
|
||||
sizeBytes: Number(row.size_bytes),
|
||||
storedSizeBytes: row.stored_size_bytes ? Number(row.stored_size_bytes) : undefined,
|
||||
createdAt: Number(row.created_at),
|
||||
includesImage: Boolean(row.includes_image),
|
||||
platformResources,
|
||||
|
||||
Reference in New Issue
Block a user