refactor(clone): integrate preview cloning logic directly into application cloning function for improved clarity and maintainability

This commit is contained in:
Andras Bacsai
2025-09-11 12:29:49 +02:00
parent 4ac89f2ad3
commit 6ed2fd5d66

View File

@@ -238,7 +238,28 @@ function clone_application(Application $source, $destination, array $overrides =
} }
// Clone previews with FQDN regeneration // Clone previews with FQDN regeneration
clone_application_previews($source, $newApplication); $applicationPreviews = $source->previews()->get();
foreach ($applicationPreviews as $preview) {
$newPreview = $preview->replicate([
'id',
'created_at',
'updated_at',
])->fill([
'uuid' => (string) new Cuid2,
'application_id' => $newApplication->id,
'status' => 'exited',
'fqdn' => null,
'docker_compose_domains' => null,
]);
$newPreview->save();
// Regenerate FQDN for the cloned preview
if ($newApplication->build_pack === 'dockercompose') {
$newPreview->generate_preview_fqdn_compose();
} else {
$newPreview->generate_preview_fqdn();
}
}
// Clone persistent volumes // Clone persistent volumes
$persistentVolumes = $source->persistentStorages()->get(); $persistentVolumes = $source->persistentStorages()->get();
@@ -312,29 +333,3 @@ function clone_application(Application $source, $destination, array $overrides =
return $newApplication; return $newApplication;
} }
function clone_application_previews(Application $sourceApplication, Application $targetApplication): void
{
$applicationPreviews = $sourceApplication->previews()->get();
foreach ($applicationPreviews as $preview) {
$newPreview = $preview->replicate([
'id',
'created_at',
'updated_at',
])->fill([
'uuid' => (string) new Cuid2,
'application_id' => $targetApplication->id,
'status' => 'exited',
'fqdn' => null,
'docker_compose_domains' => null,
]);
$newPreview->save();
// Regenerate FQDN for the cloned preview
if ($targetApplication->build_pack === 'dockercompose') {
$newPreview->generate_preview_fqdn_compose();
} else {
$newPreview->generate_preview_fqdn();
}
}
}