mirror of
https://github.com/Dokploy/dokploy.git
synced 2026-07-12 01:15:23 +02:00
feat: implement volume backup management functionality
- Added components for handling and displaying volume backups in the dashboard. - Created API routes for managing volume backups, including create, update, delete, and list operations. - Introduced database schema for volume backups, including necessary fields and relationships. - Updated the application to integrate volume backup features into the service management interface.
This commit is contained in:
@@ -37,6 +37,7 @@ import { swarmRouter } from "./routers/swarm";
|
||||
import { userRouter } from "./routers/user";
|
||||
import { scheduleRouter } from "./routers/schedule";
|
||||
import { rollbackRouter } from "./routers/rollbacks";
|
||||
import { volumeBackupsRouter } from "./routers/volume-backups";
|
||||
/**
|
||||
* This is the primary router for your server.
|
||||
*
|
||||
@@ -82,6 +83,7 @@ export const appRouter = createTRPCRouter({
|
||||
organization: organizationRouter,
|
||||
schedule: scheduleRouter,
|
||||
rollback: rollbackRouter,
|
||||
volumeBackups: volumeBackupsRouter,
|
||||
});
|
||||
|
||||
// export type definition of API
|
||||
|
||||
76
apps/dokploy/server/api/routers/volume-backups.ts
Normal file
76
apps/dokploy/server/api/routers/volume-backups.ts
Normal file
@@ -0,0 +1,76 @@
|
||||
import {
|
||||
findVolumeBackupById,
|
||||
IS_CLOUD,
|
||||
updateVolumeBackup,
|
||||
removeVolumeBackup,
|
||||
createVolumeBackup,
|
||||
} from "@dokploy/server";
|
||||
import {
|
||||
createVolumeBackupSchema,
|
||||
updateVolumeBackupSchema,
|
||||
volumeBackups,
|
||||
} from "@dokploy/server/db/schema";
|
||||
import { z } from "zod";
|
||||
import { createTRPCRouter, protectedProcedure } from "../trpc";
|
||||
import { db } from "@dokploy/server/db";
|
||||
import { eq } from "drizzle-orm";
|
||||
|
||||
export const volumeBackupsRouter = createTRPCRouter({
|
||||
list: protectedProcedure
|
||||
.input(
|
||||
z.object({
|
||||
id: z.string().min(1),
|
||||
volumeBackupType: z.enum([
|
||||
"application",
|
||||
"postgres",
|
||||
"mysql",
|
||||
"mariadb",
|
||||
"mongo",
|
||||
"redis",
|
||||
"compose",
|
||||
]),
|
||||
}),
|
||||
)
|
||||
.query(async ({ input }) => {
|
||||
return await db.query.volumeBackups.findMany({
|
||||
where: eq(volumeBackups[`${input.volumeBackupType}Id`], input.id),
|
||||
});
|
||||
}),
|
||||
create: protectedProcedure
|
||||
.input(createVolumeBackupSchema)
|
||||
.mutation(async ({ input }) => {
|
||||
return await createVolumeBackup(input);
|
||||
}),
|
||||
one: protectedProcedure
|
||||
.input(
|
||||
z.object({
|
||||
volumeBackupId: z.string().min(1),
|
||||
}),
|
||||
)
|
||||
.query(async ({ input }) => {
|
||||
return await findVolumeBackupById(input.volumeBackupId);
|
||||
}),
|
||||
delete: protectedProcedure
|
||||
.input(
|
||||
z.object({
|
||||
volumeBackupId: z.string().min(1),
|
||||
}),
|
||||
)
|
||||
.mutation(async ({ input }) => {
|
||||
if (IS_CLOUD) {
|
||||
return true;
|
||||
}
|
||||
return await removeVolumeBackup(input.volumeBackupId);
|
||||
}),
|
||||
update: protectedProcedure
|
||||
.input(updateVolumeBackupSchema)
|
||||
.mutation(async ({ input }) => {
|
||||
return await updateVolumeBackup(input.volumeBackupId, input);
|
||||
}),
|
||||
|
||||
runManually: protectedProcedure
|
||||
.input(z.object({ volumeBackupId: z.string().min(1) }))
|
||||
.mutation(async ({ input }) => {
|
||||
// return await runVolumeBackupManually(input.volumeBackupId);
|
||||
}),
|
||||
});
|
||||
Reference in New Issue
Block a user