From 01434a9b2d59946d9f5098a37e79aad42f682998 Mon Sep 17 00:00:00 2001 From: Yisroel Baum Date: Tue, 2 Jun 2026 17:12:44 +0300 Subject: [PATCH] simplify media deletion --- .../UpdateElement/UpdateIconImageUrl.php | 6 ---- .../UseCases/UpdateElement/UpdatePdfPath.php | 6 ---- backend/database/seeders/ElementSeeder.php | 33 +++++++++++++++++-- frontend/rabbi_gerzi/cypress/e2e/media.cy.ts | 4 ++- 4 files changed, 34 insertions(+), 15 deletions(-) diff --git a/backend/app/Element/UseCases/UpdateElement/UpdateIconImageUrl.php b/backend/app/Element/UseCases/UpdateElement/UpdateIconImageUrl.php index f6f13f5..278c566 100644 --- a/backend/app/Element/UseCases/UpdateElement/UpdateIconImageUrl.php +++ b/backend/app/Element/UseCases/UpdateElement/UpdateIconImageUrl.php @@ -10,8 +10,6 @@ use App\Shared\Files\FileUploader; class UpdateIconImageUrl { - private const MANAGED_FOLDER_PREFIX = 'element-icons/'; - public function __construct( private ElementRepository $elementRepository, private FileUploader $fileUploader, @@ -62,10 +60,6 @@ class UpdateIconImageUrl return; } - if (! str_starts_with($path, self::MANAGED_FOLDER_PREFIX)) { - return; - } - $this->fileUploader->delete($path); } } diff --git a/backend/app/Element/UseCases/UpdateElement/UpdatePdfPath.php b/backend/app/Element/UseCases/UpdateElement/UpdatePdfPath.php index 2bb2cc5..404c78b 100644 --- a/backend/app/Element/UseCases/UpdateElement/UpdatePdfPath.php +++ b/backend/app/Element/UseCases/UpdateElement/UpdatePdfPath.php @@ -10,8 +10,6 @@ use App\Shared\Files\FileUploader; class UpdatePdfPath { - private const MANAGED_FOLDER_PREFIX = 'element-pdfs/'; - public function __construct( private ElementRepository $elementRepository, private FileUploader $fileUploader, @@ -62,10 +60,6 @@ class UpdatePdfPath return; } - if (! str_starts_with($path, self::MANAGED_FOLDER_PREFIX)) { - return; - } - $this->fileUploader->delete($path); } } diff --git a/backend/database/seeders/ElementSeeder.php b/backend/database/seeders/ElementSeeder.php index ba89ab1..0cdac7c 100644 --- a/backend/database/seeders/ElementSeeder.php +++ b/backend/database/seeders/ElementSeeder.php @@ -6,6 +6,7 @@ use App\Element\CreateElementDto; use App\Element\ElementRepository; use App\Set\SetRepository; use Illuminate\Database\Seeder; +use Illuminate\Support\Facades\Storage; use RuntimeException; class ElementSeeder extends Seeder @@ -15,11 +16,25 @@ class ElementSeeder extends Seeder $setRepository = app(SetRepository::class); $elementRepository = app(ElementRepository::class); $baderechSet = $setRepository->find(1); + $rootIconImageUrl = $this->seedStorageFile( + base_path( + '../frontend/rabbi_gerzi/public/assets/' + . 'baderech-haavodah-icon.png', + ), + 'element-icons/baderech-haavodah-icon.png', + ); + $introductionPdfPath = $this->seedStorageFile( + base_path( + '../frontend/rabbi_gerzi/public/assets/pdfs/baderech.pdf', + ), + 'element-pdfs/baderech.pdf', + ); + $rootElement = $elementRepository->create(new CreateElementDto( set: $baderechSet, title: $baderechSet->getName(), description: $baderechSet->getDescription(), - iconImageUrl: '/assets/baderech-haavodah-icon.png', + iconImageUrl: $rootIconImageUrl, richText: '', pdfPath: null, youtubeUrl: null, @@ -36,7 +51,7 @@ class ElementSeeder extends Seeder . 'unlock the ability to live with strength, confidence, ' . 'and hope.', 'richText' => $this->introductionRichText(), - 'pdfPath' => '/assets/pdfs/baderech.pdf', + 'pdfPath' => $introductionPdfPath, ], [ 'title' => '2. Foundations', @@ -116,6 +131,20 @@ class ElementSeeder extends Seeder )); } + private function seedStorageFile( + string $sourcePath, + string $storagePath, + ): string { + $contents = file_get_contents($sourcePath); + if ($contents === false) { + throw new RuntimeException("Seed file missing: $sourcePath"); + } + + Storage::disk('public')->put($storagePath, $contents); + + return $storagePath; + } + private function introductionRichText(): string { return '

' diff --git a/frontend/rabbi_gerzi/cypress/e2e/media.cy.ts b/frontend/rabbi_gerzi/cypress/e2e/media.cy.ts index ade88e7..e0f361a 100644 --- a/frontend/rabbi_gerzi/cypress/e2e/media.cy.ts +++ b/frontend/rabbi_gerzi/cypress/e2e/media.cy.ts @@ -117,10 +117,12 @@ describe('media page sets', () => { .should('have.css', 'text-align', 'center') cy.get('[data-cy="element-youtube-embed"]').should('not.exist') cy.contains('[data-cy="element-pdf-link"]', 'View PDF') + .as('pdfLink') .should('be.visible') + .and('have.attr', 'target', '_blank') + cy.get('@pdfLink') .and('have.attr', 'href') .and('include', '/storage/element-pdfs/baderech.pdf') - .and('have.attr', 'target', '_blank') cy.contains('[data-cy="child-element-link"]', introductionAudioTitle) .as('introductionAudioLink') .should('have.attr', 'href', '/element/8')