refactor: update volume backup schema and form handling

- Modified the volume backup schema to enforce non-null constraints on volumeName and added serviceName.
- Removed unnecessary fields (type, hostPath) from the schema and updated related API and form handling.
- Enhanced form validation to ensure required fields are properly checked.
- Updated the UI components to reflect changes in the volume backup management interface.
This commit is contained in:
Mauricio Siu
2025-06-29 23:05:36 -06:00
parent ce88a0a5f2
commit a5bba9a11b
8 changed files with 12279 additions and 27 deletions

View File

@@ -1,5 +1,5 @@
import { relations } from "drizzle-orm";
import { boolean, integer, pgEnum, pgTable, text } from "drizzle-orm/pg-core";
import { boolean, integer, pgTable, text } from "drizzle-orm/pg-core";
import { createInsertSchema } from "drizzle-zod";
import { nanoid } from "nanoid";
import { z } from "zod";
@@ -13,19 +13,16 @@ import { postgres } from "./postgres";
import { mariadb } from "./mariadb";
import { destinations } from "./destination";
export const volumeBackupType = pgEnum("volumeBackupType", ["bind", "volume"]);
export const volumeBackups = pgTable("volume_backup", {
volumeBackupId: text("volumeBackupId")
.notNull()
.primaryKey()
.$defaultFn(() => nanoid()),
name: text("name").notNull(),
type: volumeBackupType("type").notNull().default("volume"),
volumeName: text("volumeName"),
hostPath: text("hostPath"),
volumeName: text("volumeName").notNull(),
prefix: text("prefix").notNull(),
serviceType: serviceType("serviceType").notNull().default("application"),
serviceName: text("serviceName"),
turnOff: boolean("turnOff").notNull().default(false),
cronExpression: text("cronExpression").notNull(),
keepLatestCount: integer("keepLatestCount"),
@@ -95,10 +92,8 @@ export const volumeBackupsRelations = relations(volumeBackups, ({ one }) => ({
}),
}));
export const createVolumeBackupSchema = createInsertSchema(
volumeBackups,
).extend({
volumeName: z.string().min(1),
export const createVolumeBackupSchema = createInsertSchema(volumeBackups).omit({
volumeBackupId: true,
});
export const updateVolumeBackupSchema = createVolumeBackupSchema.extend({