feat: limit upload speed during backups

This commit is contained in:
Nicolas Meienberger
2025-11-22 11:03:57 +01:00
parent 043f73ea87
commit 8ccece42f0
11 changed files with 661 additions and 87 deletions

View File

@@ -24,6 +24,7 @@ const backupScheduleSchema = type({
retentionPolicy: retentionPolicySchema.or("null"),
excludePatterns: "string[] | null",
includePatterns: "string[] | null",
limitUploadKbps: "number | null",
lastBackupAt: "number | null",
lastBackupStatus: "'success' | 'error' | 'in_progress' | null",
lastBackupError: "string | null",
@@ -114,6 +115,7 @@ export const createBackupScheduleBody = type({
retentionPolicy: retentionPolicySchema.optional(),
excludePatterns: "string[]?",
includePatterns: "string[]?",
limitUploadKbps: "number?",
tags: "string[]?",
});
@@ -149,6 +151,7 @@ export const updateBackupScheduleBody = type({
retentionPolicy: retentionPolicySchema.optional(),
excludePatterns: "string[]?",
includePatterns: "string[]?",
limitUploadKbps: "number?",
tags: "string[]?",
});

View File

@@ -88,6 +88,7 @@ const createSchedule = async (data: CreateBackupScheduleBody) => {
retentionPolicy: data.retentionPolicy ?? null,
excludePatterns: data.excludePatterns ?? [],
includePatterns: data.includePatterns ?? [],
limitUploadKbps: data.limitUploadKbps ?? null,
nextBackupAt: nextBackupAt,
})
.returning();
@@ -212,9 +213,11 @@ const executeBackup = async (scheduleId: number, manual = false) => {
exclude?: string[];
include?: string[];
tags?: string[];
limitUploadKbps?: number | null;
signal?: AbortSignal;
} = {
tags: [schedule.id.toString()],
limitUploadKbps: schedule.limitUploadKbps,
signal: abortController.signal,
};