MCPcopy
hub / github.com/Dokploy/dokploy / runLibsqlBackup

Function runLibsqlBackup

packages/server/src/utils/backups/libsql.ts:19–81  ·  view source on GitHub ↗
(
	libsql: Libsql,
	backup: BackupSchedule,
)

Source from the content-addressed store, hash-verified

17} from "./utils";
18
19export const runLibsqlBackup = async (
20 libsql: Libsql,
21 backup: BackupSchedule,
22) => {
23 const { name, environmentId, appName } = libsql;
24 const environment = await findEnvironmentById(environmentId);
25 const project = await findProjectById(environment.projectId);
26
27 const deployment = await createDeploymentBackup({
28 backupId: backup.backupId,
29 title: "Initializing Backup",
30 description: "Initializing Backup",
31 });
32 const { prefix } = backup;
33 const destination = await findDestinationById(backup.destinationId);
34 const backupFileName = `${getBackupTimestamp()}.sql.gz`;
35 const bucketDestination = `${appName}/${normalizeS3Path(prefix)}${backupFileName}`;
36 try {
37 const rcloneFlags = getS3Credentials(destination);
38 const rcloneDestination = `:s3:${destination.bucket}/${bucketDestination}`;
39
40 const rcloneCommand = `rclone rcat ${rcloneFlags.join(" ")} "${rcloneDestination}"`;
41
42 const backupCommand = getBackupCommand(
43 backup,
44 rcloneCommand,
45 deployment.logPath,
46 );
47 if (libsql.serverId) {
48 await execAsyncRemote(libsql.serverId, backupCommand);
49 } else {
50 await execAsync(backupCommand, {
51 shell: "/bin/bash",
52 });
53 }
54
55 await sendDatabaseBackupNotifications({
56 applicationName: name,
57 projectName: project.name,
58 databaseType: "libsql",
59 type: "success",
60 organizationId: project.organizationId,
61 databaseName: backup.database,
62 });
63
64 await updateDeploymentStatus(deployment.deploymentId, "done");
65 } catch (error) {
66 await sendDatabaseBackupNotifications({
67 applicationName: name,
68 projectName: project.name,
69 databaseType: "libsql",
70 type: "error",
71 // @ts-ignore
72 errorMessage: error?.message || "Error message not provided",
73 organizationId: project.organizationId,
74 databaseName: backup.database,
75 });
76

Callers 3

scheduleBackupFunction · 0.90
backup.tsFile · 0.90
runJobsFunction · 0.90

Calls 12

findEnvironmentByIdFunction · 0.90
findProjectByIdFunction · 0.90
createDeploymentBackupFunction · 0.90
findDestinationByIdFunction · 0.90
getBackupTimestampFunction · 0.90
normalizeS3PathFunction · 0.90
getS3CredentialsFunction · 0.90
getBackupCommandFunction · 0.90
execAsyncRemoteFunction · 0.90
execAsyncFunction · 0.90
updateDeploymentStatusFunction · 0.90

Tested by

no test coverage detected