mirror of
https://github.com/andwati/dokploy.git
synced 2026-10-25 22:42:18 +00:00
- Removed the `getRemoteServiceContainer` function and updated the `getServiceContainer` function to handle both local and remote service containers more efficiently. - Refactored backup and restore commands for MariaDB, MongoDB, MySQL, and PostgreSQL to utilize new utility functions for generating backup and restore commands, enhancing code clarity and maintainability. - Streamlined command execution logic in backup and restore processes, ensuring consistent handling of container IDs across different database types.
60 lines
1.5 KiB
TypeScript
60 lines
1.5 KiB
TypeScript
import type { Destination } from "@dokploy/server/services/destination";
|
|
import type { Mariadb } from "@dokploy/server/services/mariadb";
|
|
import { getS3Credentials } from "../backups/utils";
|
|
import { getServiceContainer } from "../docker/utils";
|
|
import { execAsync, execAsyncRemote } from "../process/execAsync";
|
|
import { getMariadbRestoreCommand } from "./utils";
|
|
|
|
export const restoreMariadbBackup = async (
|
|
mariadb: Mariadb,
|
|
destination: Destination,
|
|
database: string,
|
|
backupFile: string,
|
|
emit: (log: string) => void,
|
|
) => {
|
|
try {
|
|
const { appName, databasePassword, databaseUser, serverId } = mariadb;
|
|
|
|
const rcloneFlags = getS3Credentials(destination);
|
|
const bucketPath = `:s3:${destination.bucket}`;
|
|
const backupPath = `${bucketPath}/${backupFile}`;
|
|
|
|
const { Id: containerId } = await getServiceContainer(appName, serverId);
|
|
|
|
const restoreCommand = getMariadbRestoreCommand(
|
|
containerId,
|
|
database,
|
|
databaseUser,
|
|
databasePassword || "",
|
|
);
|
|
|
|
const command = `
|
|
rclone cat ${rcloneFlags.join(" ")} "${backupPath}" | gunzip | ${restoreCommand}
|
|
`;
|
|
|
|
emit("Starting restore...");
|
|
|
|
emit(`Executing command: ${command}`);
|
|
|
|
if (serverId) {
|
|
await execAsyncRemote(serverId, command);
|
|
} else {
|
|
await execAsync(command);
|
|
}
|
|
|
|
emit("Restore completed successfully!");
|
|
} catch (error) {
|
|
console.error(error);
|
|
emit(
|
|
`Error: ${
|
|
error instanceof Error
|
|
? error.message
|
|
: "Error restoring mariadb backup"
|
|
}`,
|
|
);
|
|
throw new Error(
|
|
error instanceof Error ? error.message : "Error restoring mariadb backup",
|
|
);
|
|
}
|
|
};
|