From 3ed65f0668d5dcdc712411fcdd1a81edb1afe99b Mon Sep 17 00:00:00 2001 From: Manuel Aranda Date: Thu, 13 Feb 2025 08:36:26 +0100 Subject: [PATCH] refs #1472. Changes in images and imageRepo --- .../Image/DeletePermanentAction.php | 2 +- src/Controller/OgRepository/SyncAction.php | 30 +++++++++++++------ .../Webhook/ResponseController.php | 5 ++++ 3 files changed, 27 insertions(+), 10 deletions(-) diff --git a/src/Controller/OgRepository/Image/DeletePermanentAction.php b/src/Controller/OgRepository/Image/DeletePermanentAction.php index 869f4f5..7b14d90 100644 --- a/src/Controller/OgRepository/Image/DeletePermanentAction.php +++ b/src/Controller/OgRepository/Image/DeletePermanentAction.php @@ -34,7 +34,7 @@ class DeletePermanentAction extends AbstractOgRepositoryController $this->logger->info('Deleting image', ['image' => $image->getName()]); - $repository = $image->getClient()->getRepository(); + $repository = $data->getRepository(); $content = $this->createRequest( 'DELETE', 'http://'.$repository->getIp().':8006/ogrepository/v1/images/'.$data->getImageFullsum().'?method=permanent'); diff --git a/src/Controller/OgRepository/SyncAction.php b/src/Controller/OgRepository/SyncAction.php index b63e287..1d53f31 100644 --- a/src/Controller/OgRepository/SyncAction.php +++ b/src/Controller/OgRepository/SyncAction.php @@ -3,6 +3,7 @@ namespace App\Controller\OgRepository; use App\Entity\Image; +use App\Entity\ImageImageRepository; use App\Entity\ImageRepository; use App\Model\ImageStatus; use Symfony\Component\HttpFoundation\JsonResponse; @@ -22,26 +23,37 @@ class SyncAction extends AbstractOgRepositoryController * @throws RedirectionExceptionInterface * @throws ClientExceptionInterface */ - public function __invoke(ImageRepository $data): JsonResponse + public function __invoke(ImageRepository $input): JsonResponse { - $content = $this->createRequest('GET', 'http://'.$data->getIp(). ':8006/ogrepository/v1/images'); + $content = $this->createRequest('GET', 'http://'.$input->getIp(). ':8006/ogrepository/v1/images'); if (!isset($content['output']['REPOSITORY']['images'])) { return new JsonResponse(data: 'No images found', status: Response::HTTP_NOT_FOUND); } foreach ($content['output']['REPOSITORY']['images'] as $image) { - $imageEntity = $this->entityManager->getRepository(Image::class)->findOneBy(['imageFullsum' => $image['fullsum']]); + $imageImageRepositoryEntity = $this->entityManager->getRepository(ImageImageRepository::class)->findOneBy(['imageFullsum' => $image['fullsum']]); + $imageEntity = $this->entityManager->getRepository(Image::class)->findOneBy(['name' => $image['name']]); + if (!$imageEntity) { $imageEntity = new Image(); - $imageEntity->setName($image['name'].$image['type']); - $imageEntity->setStatus(ImageStatus::SUCCESS); - //$imageEntity->setRepository($data); - $imageEntity->setCreated(true ); - $imageEntity->setImageFullsum($image['fullsum']); + $imageEntity->setName($image['name']); $imageEntity->setRemotePc(false); + $imageEntity->setIsGlobal(false); + + $this->entityManager->persist($imageEntity); } - $this->entityManager->persist($imageEntity); + + if (!$imageImageRepositoryEntity) { + $imageImageRepositoryEntity = new ImageImageRepository(); + $imageImageRepositoryEntity->setImageFullsum($image['fullsum']); + $imageImageRepositoryEntity->setStatus(ImageStatus::SUCCESS); + $imageImageRepositoryEntity->setImage($imageEntity); + $imageImageRepositoryEntity->setRepository($input); + + $this->entityManager->persist($imageImageRepositoryEntity); + } + } $this->entityManager->flush(); diff --git a/src/Controller/OgRepository/Webhook/ResponseController.php b/src/Controller/OgRepository/Webhook/ResponseController.php index 4138890..a0839a1 100644 --- a/src/Controller/OgRepository/Webhook/ResponseController.php +++ b/src/Controller/OgRepository/Webhook/ResponseController.php @@ -93,6 +93,11 @@ class ResponseController extends AbstractOgRepositoryController $repository = $this->entityManager->getRepository(ImageRepository::class)->findOneBy(['uuid' => $repositoryUuid]); $imageImageRepository = $this->entityManager->getRepository(ImageImageRepository::class)->findOneBy(['uuid' => $imageImageRepositoryUuid]); + if ($data['success'] !== true) { + $this->updateTraceStatus($trace, TraceStatus::FAILED, 'Action failed'); + return; + } + if ($image === null) { $this->updateTraceStatus($trace, TraceStatus::FAILED, 'Image not found'); return;