From 2f813099c5d01a708fbb33f15ad49e91d807acba Mon Sep 17 00:00:00 2001 From: Manuel Aranda Date: Wed, 19 Mar 2025 16:04:55 +0100 Subject: [PATCH] Updated ogrepo sync funcionality --- src/Controller/OgRepository/SyncAction.php | 23 +++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/src/Controller/OgRepository/SyncAction.php b/src/Controller/OgRepository/SyncAction.php index 10ff6b9..f4fd765 100644 --- a/src/Controller/OgRepository/SyncAction.php +++ b/src/Controller/OgRepository/SyncAction.php @@ -25,14 +25,24 @@ class SyncAction extends AbstractOgRepositoryController */ public function __invoke(ImageRepository $input): JsonResponse { - $content = $this->createRequest('GET', 'http://'.$input->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); } + $repository = $this->entityManager->getRepository(ImageImageRepository::class); + + $existingImages = $repository->findBy(['repository' => $input]); + + $newImageFullsums = array_column($content['output']['REPOSITORY']['images'], 'fullsum'); + foreach ($content['output']['REPOSITORY']['images'] as $image) { - $imageImageRepositoryEntity = $this->entityManager->getRepository(ImageImageRepository::class)->findOneBy(['imageFullsum' => $image['fullsum'], 'repository' => $input]); + $imageImageRepositoryEntity = $repository->findOneBy([ + 'imageFullsum' => $image['fullsum'], + 'repository' => $input + ]); + $imageEntity = $this->entityManager->getRepository(Image::class)->findOneBy(['name' => $image['name']]); if (!$imageEntity) { @@ -53,10 +63,17 @@ class SyncAction extends AbstractOgRepositoryController $this->entityManager->persist($imageImageRepositoryEntity); } - } + + foreach ($existingImages as $existingImage) { + if (!in_array($existingImage->getImageFullsum(), $newImageFullsums)) { + $this->entityManager->remove($existingImage); + } + } + $this->entityManager->flush(); return new JsonResponse(data: $content, status: Response::HTTP_OK); } + } \ No newline at end of file