diff --git a/apps/dokploy/components/dashboard/database/backups/handle-backup.tsx b/apps/dokploy/components/dashboard/database/backups/handle-backup.tsx index ec2bc9100..fd5c15982 100644 --- a/apps/dokploy/components/dashboard/database/backups/handle-backup.tsx +++ b/apps/dokploy/components/dashboard/database/backups/handle-backup.tsx @@ -65,7 +65,13 @@ import { ScheduleFormField } from "../../application/schedules/handle-schedules" type CacheType = "cache" | "fetch"; -type DatabaseType = "postgres" | "mariadb" | "mysql" | "mongo" | "web-server" | "libsql"; +type DatabaseType = + | "postgres" + | "mariadb" + | "mysql" + | "mongo" + | "web-server" + | "libsql"; const Schema = z .object({ @@ -209,7 +215,12 @@ export const HandleBackup = ({ const form = useForm({ defaultValues: { - database: databaseType === "web-server" ? "dokploy" : databaseType === "libsql" ? "iku.db" : "", + database: + databaseType === "web-server" + ? "dokploy" + : databaseType === "libsql" + ? "iku.db" + : "", destinationId: "", enabled: true, prefix: "/", @@ -284,14 +295,14 @@ export const HandleBackup = ({ mongoId: id, } : databaseType === "libsql" - ? { - libsqlId: id, - } - : databaseType === "web-server" ? { - userId: id, + libsqlId: id, } - : undefined; + : databaseType === "web-server" + ? { + userId: id, + } + : undefined; await createBackup({ destinationId: data.destinationId, diff --git a/apps/dokploy/components/dashboard/database/backups/show-backups.tsx b/apps/dokploy/components/dashboard/database/backups/show-backups.tsx index 83bc521f0..ebffaccb3 100644 --- a/apps/dokploy/components/dashboard/database/backups/show-backups.tsx +++ b/apps/dokploy/components/dashboard/database/backups/show-backups.tsx @@ -39,9 +39,7 @@ import { RestoreBackup } from "./restore-backup"; interface Props { id: string; - databaseType?: - | Exclude - | "web-server"; + databaseType?: Exclude | "web-server"; backupType?: "database" | "compose"; } export const ShowBackups = ({ diff --git a/packages/server/src/db/schema/backups.ts b/packages/server/src/db/schema/backups.ts index 5dcad6a9f..8698f41ec 100644 --- a/packages/server/src/db/schema/backups.ts +++ b/packages/server/src/db/schema/backups.ts @@ -76,12 +76,9 @@ export const backups = pgTable("backup", { mongoId: text("mongoId").references((): AnyPgColumn => mongo.mongoId, { onDelete: "cascade", }), - libsqlId: text("libsqlId").references( - (): AnyPgColumn => libsql.libsqlId, - { - onDelete: "cascade", - }, - ), + libsqlId: text("libsqlId").references((): AnyPgColumn => libsql.libsqlId, { + onDelete: "cascade", + }), userId: text("userId").references(() => user.id), // Only for compose backups metadata: jsonb("metadata").$type< @@ -149,7 +146,14 @@ const createSchema = createInsertSchema(backups, { database: z.string().min(1), schedule: z.string(), keepLatestCount: z.number().optional(), - databaseType: z.enum(["postgres", "mariadb", "mysql", "mongo", "web-server", "libsql"]), + databaseType: z.enum([ + "postgres", + "mariadb", + "mysql", + "mongo", + "web-server", + "libsql", + ]), postgresId: z.string().optional(), mariadbId: z.string().optional(), mysqlId: z.string().optional(), @@ -206,7 +210,14 @@ export const apiUpdateBackup = createSchema export const apiRestoreBackup = z.object({ databaseId: z.string(), - databaseType: z.enum(["postgres", "mysql", "mariadb", "mongo", "web-server", "libsql"]), + databaseType: z.enum([ + "postgres", + "mysql", + "mariadb", + "mongo", + "web-server", + "libsql", + ]), backupType: z.enum(["database", "compose"]), databaseName: z.string().min(1), backupFile: z.string().min(1), diff --git a/packages/server/src/db/schema/libsql.ts b/packages/server/src/db/schema/libsql.ts index 426a785c1..5759d6697 100644 --- a/packages/server/src/db/schema/libsql.ts +++ b/packages/server/src/db/schema/libsql.ts @@ -107,7 +107,9 @@ const createSchema = createInsertSchema(libsql, { sqldNode: z.enum(sqldNode.enumValues), sqldPrimaryUrl: z.string().nullable(), enableNamespaces: z.boolean().default(false), - dockerImage: z.string().default("ghcr.io/tursodatabase/libsql-server:v0.24.32"), + dockerImage: z + .string() + .default("ghcr.io/tursodatabase/libsql-server:v0.24.32"), command: z.string().optional(), env: z.string().optional(), memoryReservation: z.string().optional(), diff --git a/packages/server/src/utils/backups/utils.ts b/packages/server/src/utils/backups/utils.ts index ebb763d60..b117fbf39 100644 --- a/packages/server/src/utils/backups/utils.ts +++ b/packages/server/src/utils/backups/utils.ts @@ -132,12 +132,24 @@ export const getComposeContainerCommand = ( }; const getContainerSearchCommand = (backup: BackupSchedule) => { - const { backupType, postgres, mysql, mariadb, mongo, libsql, compose, serviceName } = - backup; + const { + backupType, + postgres, + mysql, + mariadb, + mongo, + libsql, + compose, + serviceName, + } = backup; if (backupType === "database") { const appName = - postgres?.appName || mysql?.appName || mariadb?.appName || mongo?.appName || libsql?.appName; + postgres?.appName || + mysql?.appName || + mariadb?.appName || + mongo?.appName || + libsql?.appName; return getServiceContainerCommand(appName || ""); } if (backupType === "compose") { diff --git a/packages/server/src/utils/restore/compose.ts b/packages/server/src/utils/restore/compose.ts index d2ba0a85b..7a4492309 100644 --- a/packages/server/src/utils/restore/compose.ts +++ b/packages/server/src/utils/restore/compose.ts @@ -62,7 +62,11 @@ export const restoreComposeBackup = async ( const restoreCommand = getRestoreCommand({ appName: appName, serviceName: backupInput.metadata?.serviceName, - type: backupInput.databaseType as "postgres" | "mariadb" | "mysql" | "mongo", + type: backupInput.databaseType as + | "postgres" + | "mariadb" + | "mysql" + | "mongo", credentials: { database: backupInput.databaseName, ...credentials, diff --git a/packages/server/src/utils/restore/libsql.ts b/packages/server/src/utils/restore/libsql.ts index 4c07f294c..e984826f8 100644 --- a/packages/server/src/utils/restore/libsql.ts +++ b/packages/server/src/utils/restore/libsql.ts @@ -41,9 +41,7 @@ export const restoreLibsqlBackup = async ( } catch (error) { emit( `Error: ${ - error instanceof Error - ? error.message - : "Error restoring libsql backup" + error instanceof Error ? error.message : "Error restoring libsql backup" }`, ); throw error;