File size: 917 Bytes
96e86e5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | import { Router } from "express";
import type { BackupRetentionPolicy, RunDatabaseBackupResult } from "@penclipai/db";
import { assertInstanceAdmin } from "./authz.js";
export type InstanceDatabaseBackupTrigger = "manual" | "scheduled";
export type InstanceDatabaseBackupRunResult = RunDatabaseBackupResult & {
trigger: InstanceDatabaseBackupTrigger;
backupDir: string;
retention: BackupRetentionPolicy;
startedAt: string;
finishedAt: string;
durationMs: number;
};
export type InstanceDatabaseBackupService = {
runManualBackup(): Promise<InstanceDatabaseBackupRunResult>;
};
export function instanceDatabaseBackupRoutes(service: InstanceDatabaseBackupService) {
const router = Router();
router.post("/instance/database-backups", async (req, res) => {
assertInstanceAdmin(req);
const result = await service.runManualBackup();
res.status(201).json(result);
});
return router;
}
|