( deployment: Omit< z.infer<typeof apiCreateDeploymentVolumeBackup>, "deploymentId" | "createdAt" | "status" | "logPath" >, )
| 507 | }; |
| 508 | |
| 509 | export const createDeploymentVolumeBackup = async ( |
| 510 | deployment: Omit< |
| 511 | z.infer<typeof apiCreateDeploymentVolumeBackup>, |
| 512 | "deploymentId" | "createdAt" | "status" | "logPath" |
| 513 | >, |
| 514 | ) => { |
| 515 | const volumeBackup = await findVolumeBackupById(deployment.volumeBackupId); |
| 516 | |
| 517 | const serverId = |
| 518 | volumeBackup.application?.serverId || volumeBackup.compose?.serverId; |
| 519 | await removeLastTenDeployments( |
| 520 | deployment.volumeBackupId, |
| 521 | "volumeBackup", |
| 522 | serverId, |
| 523 | ); |
| 524 | try { |
| 525 | const { VOLUME_BACKUPS_PATH } = paths(!!serverId); |
| 526 | const formattedDateTime = format(new Date(), "yyyy-MM-dd:HH:mm:ss"); |
| 527 | const fileName = `${volumeBackup.appName}-${formattedDateTime}.log`; |
| 528 | const logFilePath = path.join( |
| 529 | VOLUME_BACKUPS_PATH, |
| 530 | volumeBackup.appName, |
| 531 | fileName, |
| 532 | ); |
| 533 | |
| 534 | if (serverId) { |
| 535 | const server = await findServerById(serverId); |
| 536 | |
| 537 | const command = ` |
| 538 | mkdir -p ${VOLUME_BACKUPS_PATH}/${volumeBackup.appName}; |
| 539 | echo "Initializing volume backup" >> ${logFilePath}; |
| 540 | `; |
| 541 | |
| 542 | await execAsyncRemote(server.serverId, command); |
| 543 | } else { |
| 544 | await fsPromises.mkdir( |
| 545 | path.join(VOLUME_BACKUPS_PATH, volumeBackup.appName), |
| 546 | { |
| 547 | recursive: true, |
| 548 | }, |
| 549 | ); |
| 550 | await fsPromises.writeFile(logFilePath, "Initializing volume backup\n"); |
| 551 | } |
| 552 | |
| 553 | const deploymentCreate = await db |
| 554 | .insert(deployments) |
| 555 | .values({ |
| 556 | volumeBackupId: deployment.volumeBackupId, |
| 557 | title: deployment.title || "Deployment", |
| 558 | status: "running", |
| 559 | logPath: logFilePath, |
| 560 | description: deployment.description || "", |
| 561 | startedAt: new Date().toISOString(), |
| 562 | }) |
| 563 | .returning(); |
| 564 | if (deploymentCreate.length === 0 || !deploymentCreate[0]) { |
| 565 | throw new TRPCError({ |
| 566 | code: "BAD_REQUEST", |
no test coverage detected