diff --git a/composer.json b/composer.json index 1b1418b..6d96fe8 100644 --- a/composer.json +++ b/composer.json @@ -11,6 +11,7 @@ "aimeos/map": "^3.12", "doctrine/dbal": "^3", "doctrine/doctrine-bundle": "^2.14", + "doctrine/doctrine-fixtures-bundle": "^4.1", "doctrine/doctrine-migrations-bundle": "^3.4", "doctrine/orm": "^3.3", "dragonmantank/cron-expression": "^3.4", diff --git a/composer.lock b/composer.lock index b8844f1..2a0fd52 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "c179718ee29dbe018b93ea7d46764931", + "content-hash": "06913c92f22c0b45934c395138318bb4", "packages": [ { "name": "1tomany/rich-bundle", @@ -446,6 +446,89 @@ ], "time": "2025-03-22T10:17:19+00:00" }, + { + "name": "doctrine/data-fixtures", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/data-fixtures.git", + "reference": "f7f1e12d6bceb58c204b3e77210a103c1c57601e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/f7f1e12d6bceb58c204b3e77210a103c1c57601e", + "reference": "f7f1e12d6bceb58c204b3e77210a103c1c57601e", + "shasum": "" + }, + "require": { + "doctrine/persistence": "^3.1 || ^4.0", + "php": "^8.1", + "psr/log": "^1.1 || ^2 || ^3" + }, + "conflict": { + "doctrine/dbal": "<3.5 || >=5", + "doctrine/orm": "<2.14 || >=4", + "doctrine/phpcr-odm": "<1.3.0" + }, + "require-dev": { + "doctrine/coding-standard": "^12", + "doctrine/dbal": "^3.5 || ^4", + "doctrine/mongodb-odm": "^1.3.0 || ^2.0.0", + "doctrine/orm": "^2.14 || ^3", + "ext-sqlite3": "*", + "fig/log-test": "^1", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.5.3", + "symfony/cache": "^6.4 || ^7", + "symfony/var-exporter": "^6.4 || ^7" + }, + "suggest": { + "alcaeus/mongo-php-adapter": "For using MongoDB ODM 1.3 with PHP 7 (deprecated)", + "doctrine/mongodb-odm": "For loading MongoDB ODM fixtures", + "doctrine/orm": "For loading ORM fixtures", + "doctrine/phpcr-odm": "For loading PHPCR ODM fixtures" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\DataFixtures\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + } + ], + "description": "Data Fixtures for all Doctrine Object Managers", + "homepage": "https://www.doctrine-project.org", + "keywords": [ + "database" + ], + "support": { + "issues": "https://github.com/doctrine/data-fixtures/issues", + "source": "https://github.com/doctrine/data-fixtures/tree/2.0.2" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdata-fixtures", + "type": "tidelift" + } + ], + "time": "2025-01-21T13:21:31+00:00" + }, { "name": "doctrine/dbal", "version": "3.9.4", @@ -727,6 +810,92 @@ ], "time": "2025-03-22T17:28:21+00:00" }, + { + "name": "doctrine/doctrine-fixtures-bundle", + "version": "4.1.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/DoctrineFixturesBundle.git", + "reference": "a06db6b81ff20a2980bf92063d80c013bb8b4b7c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/a06db6b81ff20a2980bf92063d80c013bb8b4b7c", + "reference": "a06db6b81ff20a2980bf92063d80c013bb8b4b7c", + "shasum": "" + }, + "require": { + "doctrine/data-fixtures": "^2.0", + "doctrine/doctrine-bundle": "^2.2", + "doctrine/orm": "^2.14.0 || ^3.0", + "doctrine/persistence": "^2.4 || ^3.0 || ^4.0", + "php": "^8.1", + "psr/log": "^2 || ^3", + "symfony/config": "^6.4 || ^7.0", + "symfony/console": "^6.4 || ^7.0", + "symfony/dependency-injection": "^6.4 || ^7.0", + "symfony/deprecation-contracts": "^2.1 || ^3", + "symfony/doctrine-bridge": "^6.4.16 || ^7.1.9", + "symfony/http-kernel": "^6.4 || ^7.0" + }, + "conflict": { + "doctrine/dbal": "< 3" + }, + "require-dev": { + "doctrine/coding-standard": "13.0.0", + "phpstan/phpstan": "2.1.11", + "phpunit/phpunit": "^10.5.38 || 11.4.14" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Doctrine\\Bundle\\FixturesBundle\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Doctrine Project", + "homepage": "https://www.doctrine-project.org" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony DoctrineFixturesBundle", + "homepage": "https://www.doctrine-project.org", + "keywords": [ + "Fixture", + "persistence" + ], + "support": { + "issues": "https://github.com/doctrine/DoctrineFixturesBundle/issues", + "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/4.1.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdoctrine-fixtures-bundle", + "type": "tidelift" + } + ], + "time": "2025-03-26T10:56:26+00:00" + }, { "name": "doctrine/doctrine-migrations-bundle", "version": "3.4.1", diff --git a/config/bundles.php b/config/bundles.php index 97ec940..6ef85e3 100644 --- a/config/bundles.php +++ b/config/bundles.php @@ -17,4 +17,5 @@ return [ Symfony\Bundle\MercureBundle\MercureBundle::class => ['all' => true], Symfony\UX\Turbo\TurboBundle::class => ['all' => true], Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true, 'test' => true], + Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle::class => ['dev' => true, 'test' => true], ]; diff --git a/src/DataFixtures/AppFixtures.php b/src/DataFixtures/AppFixtures.php new file mode 100644 index 0000000..987f6fe --- /dev/null +++ b/src/DataFixtures/AppFixtures.php @@ -0,0 +1,17 @@ +persist($product); + + $manager->flush(); + } +} diff --git a/src/User/Framework/DataFixtures/PreferenceFixtures.php b/src/User/Framework/DataFixtures/PreferenceFixtures.php new file mode 100644 index 0000000..d9fa777 --- /dev/null +++ b/src/User/Framework/DataFixtures/PreferenceFixtures.php @@ -0,0 +1,102 @@ + 'codec', + 'name' => 'Codec', + 'description' => null, + 'enabled' => true + ], + [ + 'id' => 'resolution', + 'name' => 'Resolution', + 'description' => null, + 'enabled' => true + ], + [ + 'id' => 'language', + 'name' => 'Language', + 'description' => null, + 'enabled' => true + ], + [ + 'id' => 'provider', + 'name' => 'Provider', + 'description' => null, + 'enabled' => true + ] + ]; + + foreach ($preferences as $preference) { + $manager->persist((new \App\User\Framework\Entity\Preference()) + ->setId($preference['id']) + ->setName($preference['name']) + ->setDescription($preference['description']) + ->setEnabled($preference['enabled']) + ); + } + + $manager->flush(); + + $options = [ + [ + 'preference_id' => 'resolution', + 'name' => '720p', + 'value' => '720p', + 'enabled' => true + ], + [ + 'preference_id' => 'resolution', + 'name' => '1080p', + 'value' => '1080p', + 'enabled' => true + ], + [ + 'preference_id' => 'resolution', + 'name' => '2160p', + 'value' => '2160p', + 'enabled' => true + ], + [ + 'preference_id' => 'codec', + 'name' => '-', + 'value' => '-', + 'enabled' => true + ], + [ + 'preference_id' => 'codec', + 'name' => 'h264', + 'value' => 'h264', + 'enabled' => true + ], + [ + 'preference_id' => 'codec', + 'name' => 'h265/HEVC', + 'value' => 'h265', + 'enabled' => true + ] + ]; + + $preferenceRepository = $manager->getRepository(\App\User\Framework\Entity\Preference::class); + foreach ($options as $option) { + $manager->persist( + (new \App\User\Framework\Entity\PreferenceOption()) + ->setPreference($preferenceRepository->find($option['preference_id'])) + ->setName($option['name']) + ->setValue($option['value']) + ->setEnabled($option['enabled']) + ); + } + + $manager->flush(); + } +} diff --git a/src/User/Framework/Entity/Preference.php b/src/User/Framework/Entity/Preference.php index f07421e..8c6790b 100644 --- a/src/User/Framework/Entity/Preference.php +++ b/src/User/Framework/Entity/Preference.php @@ -44,6 +44,12 @@ class Preference return $this->name; } + public function setId(string $id): static + { + $this->id = $id; + return $this; + } + public function setName(?string $name): static { $this->name = $name; diff --git a/symfony.lock b/symfony.lock index bec7650..74a313d 100644 --- a/symfony.lock +++ b/symfony.lock @@ -16,6 +16,18 @@ "src/Repository/.gitignore" ] }, + "doctrine/doctrine-fixtures-bundle": { + "version": "4.1", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "3.0", + "ref": "1f5514cfa15b947298df4d771e694e578d4c204d" + }, + "files": [ + "src/DataFixtures/AppFixtures.php" + ] + }, "doctrine/doctrine-migrations-bundle": { "version": "3.4", "recipe": {