mirror of
https://github.com/nicotsx/ironmount.git
synced 2025-12-10 12:10:51 +01:00
65 lines
2.0 KiB
TypeScript
65 lines
2.0 KiB
TypeScript
import { Hono } from "hono";
|
|
import { validator } from "hono-openapi";
|
|
import {
|
|
createBackupScheduleBody,
|
|
createBackupScheduleDto,
|
|
deleteBackupScheduleDto,
|
|
getBackupScheduleDto,
|
|
listBackupSchedulesDto,
|
|
runBackupNowDto,
|
|
updateBackupScheduleBody,
|
|
updateBackupScheduleDto,
|
|
} from "./backups.dto";
|
|
import { backupsService } from "./backups.service";
|
|
|
|
export const backupScheduleController = new Hono()
|
|
.get("/", listBackupSchedulesDto, async (c) => {
|
|
const schedules = await backupsService.listSchedules();
|
|
|
|
return c.json({ schedules }, 200);
|
|
})
|
|
.get("/:scheduleId", getBackupScheduleDto, async (c) => {
|
|
const scheduleId = c.req.param("scheduleId");
|
|
|
|
const schedule = await backupsService.getSchedule(Number(scheduleId));
|
|
|
|
return c.json({ schedule }, 200);
|
|
})
|
|
.post("/", createBackupScheduleDto, validator("json", createBackupScheduleBody), async (c) => {
|
|
const body = c.req.valid("json");
|
|
|
|
const schedule = await backupsService.createSchedule(body);
|
|
|
|
return c.json({ message: "Backup schedule created successfully", schedule }, 201);
|
|
})
|
|
.patch("/:scheduleId", updateBackupScheduleDto, validator("json", updateBackupScheduleBody), async (c) => {
|
|
const scheduleId = c.req.param("scheduleId");
|
|
const body = c.req.valid("json");
|
|
|
|
const schedule = await backupsService.updateSchedule(Number(scheduleId), body);
|
|
|
|
return c.json({ message: "Backup schedule updated successfully", schedule }, 200);
|
|
})
|
|
.delete("/:scheduleId", deleteBackupScheduleDto, async (c) => {
|
|
const scheduleId = c.req.param("scheduleId");
|
|
|
|
await backupsService.deleteSchedule(Number(scheduleId));
|
|
|
|
return c.json({ message: "Backup schedule deleted successfully" }, 200);
|
|
})
|
|
.post("/:scheduleId/run", runBackupNowDto, async (c) => {
|
|
const scheduleId = c.req.param("scheduleId");
|
|
|
|
backupsService.executeBackup(Number(scheduleId)).catch((error) => {
|
|
console.error("Backup execution failed:", error);
|
|
});
|
|
|
|
return c.json(
|
|
{
|
|
message: "Backup started",
|
|
backupStarted: true,
|
|
},
|
|
200,
|
|
);
|
|
});
|