fix(backups): отделить результат операций от ошибок журнала

This commit is contained in:
Denozordec committed 2026-10-01 15:11:32 +07:00
1 parent 3dcc7c9ea6
commit 5ce21e9a47
10 files changed
+113 -67

No files matched your search

+1
View File
@@ -44,6 +44,7 @@ test("invalid mutations fail before HTTP; create receives job acknowledgment", a
assert.equal(calls, 0)
assert.equal((await createBackupsAsync(base, { serverIds: ["1"], notes: "manual" })).jobId, "job-1")
assert.deepEqual(body, { serverIds: ["1"], notes: "manual" })
globalThis.fetch = async () => json({ jobId: "job-1", status: "queued", total: 2, completed: 0 }, 202); await assert.rejects(() => createBackupsAsync(base, { serverIds: ["1"] }), /всех выбранных/);
globalThis.fetch = async () => json({ created: [item], failures: [] }); await assert.rejects(() => createBackupsAsync(base, { serverIds: ["1"] }))
} finally { globalThis.fetch = original }
})
+3 -1
View File
@@ -27,7 +27,9 @@ export async function listBackups(baseUrl: string, options?: RequestInit) {
}
export async function createBackupsAsync(baseUrl: string, payload: { serverIds: string[]; notes?: string }, options?: RequestInit) {
const body = createBackupRequestSchema.parse(payload)
return createBackupJobResponseSchema.parse(await backupJson(baseUrl, "/api/backups/create", { ...options, method: "POST", body: JSON.stringify(body) }))
const result = createBackupJobResponseSchema.parse(await backupJson(baseUrl, "/api/backups/create", { ...options, method: "POST", body: JSON.stringify(body) }))
if (result.total !== body.serverIds.length) throw new Error("Не подтверждено резервное копирование всех выбранных серверов")
return result
}
export async function getBackupJob(baseUrl: string, jobId: string, options?: RequestInit) {
const result = backupJobResponseSchema.parse(await backupJson(baseUrl, "/api/backups/jobs/" + encodeURIComponent(jobId), { ...options, method: "GET" }))