diff --git a/composer.lock b/composer.lock index 47f12e72..088706c0 100644 --- a/composer.lock +++ b/composer.lock @@ -1263,16 +1263,16 @@ }, { "name": "laravel/framework", - "version": "v10.11.0", + "version": "v10.12.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "21a5b6d9b669f32c10cc8ba776511b5f62599fea" + "reference": "9e6dcff23ab1d4b522bef56074c31625cf077576" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/21a5b6d9b669f32c10cc8ba776511b5f62599fea", - "reference": "21a5b6d9b669f32c10cc8ba776511b5f62599fea", + "url": "https://api.github.com/repos/laravel/framework/zipball/9e6dcff23ab1d4b522bef56074c31625cf077576", + "reference": "9e6dcff23ab1d4b522bef56074c31625cf077576", "shasum": "" }, "require": { @@ -1459,7 +1459,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2023-05-16T13:59:23+00:00" + "time": "2023-05-23T18:04:16+00:00" }, { "name": "laravel/serializable-closure", diff --git a/src/Bridge/Laravel/Factories/SpiralFactory.php b/src/Bridge/Laravel/Factories/SpiralFactory.php new file mode 100644 index 00000000..3f9dac82 --- /dev/null +++ b/src/Bridge/Laravel/Factories/SpiralFactory.php @@ -0,0 +1,24 @@ +app->make($alias, $parameters); + } +} diff --git a/src/Bridge/Laravel/Providers/Registrators/RegisterMigrations.php b/src/Bridge/Laravel/Providers/Registrators/RegisterMigrations.php index 5aea6847..91b5caa7 100644 --- a/src/Bridge/Laravel/Providers/Registrators/RegisterMigrations.php +++ b/src/Bridge/Laravel/Providers/Registrators/RegisterMigrations.php @@ -22,7 +22,7 @@ public function __invoke(Application $app): void $config = $app->get(MigrationConfig::class); return new FileRepository( - config: $config + config: $config, ); }); diff --git a/src/Bridge/Laravel/Providers/Registrators/RegisterORM.php b/src/Bridge/Laravel/Providers/Registrators/RegisterORM.php index 7a8000c6..11cfd2bb 100644 --- a/src/Bridge/Laravel/Providers/Registrators/RegisterORM.php +++ b/src/Bridge/Laravel/Providers/Registrators/RegisterORM.php @@ -14,6 +14,7 @@ use Cycle\ORM\ORMInterface; use Cycle\ORM\SchemaInterface; use Illuminate\Contracts\Foundation\Application; +use WayOfDev\Cycle\Bridge\Laravel\Factories\SpiralFactory; use WayOfDev\Cycle\Schema\Config\SchemaConfig; /** @@ -32,6 +33,7 @@ public function __invoke(Application $app): void return new Factory( dbal: $app->get(DatabaseProviderInterface::class), config: $app->get(RelationConfig::class), + factory: $app->get(SpiralFactory::class), defaultCollectionFactory: $factory ); }); diff --git a/src/Repository.php b/src/Repository.php new file mode 100644 index 00000000..df854231 --- /dev/null +++ b/src/Repository.php @@ -0,0 +1,44 @@ + $select + */ + public function __construct( + // @phpstan-ignore-next-line + protected Select $select, + protected EntityManagerInterface $entityManager + ) { + parent::__construct($select); + } + + /** + * @throws Throwable + */ + public function persist(object $entity, bool $cascade = true): void + { + $this->entityManager->persist( + $entity, + $cascade + ); + + $this->entityManager->run(); + } +} diff --git a/tests/app/Repositories/UserRepository.php b/tests/app/Repositories/UserRepository.php index 6863406e..3e7c1f46 100644 --- a/tests/app/Repositories/UserRepository.php +++ b/tests/app/Repositories/UserRepository.php @@ -4,33 +4,13 @@ namespace WayOfDev\App\Repositories; -use Cycle\ORM\EntityManager; -use Cycle\ORM\ORMInterface; -use Cycle\ORM\Select; -use Cycle\ORM\Select\Repository; -use Throwable; use WayOfDev\App\Entities\User; +use WayOfDev\Cycle\Repository; -class UserRepository extends Repository +class UserRepository extends Repository implements UserRepositoryInterface { - private EntityManager $entityManager; - - public function __construct(Select $select, ORMInterface $orm) + public function findByUsername(string $username): ?User { - parent::__construct($select); - $this->entityManager = new EntityManager($orm); - } - - /** - * @throws Throwable - */ - public function persist(User $user, bool $cascade = true): void - { - $this->entityManager->persist( - $user, - $cascade - ); - - $this->entityManager->run(); + return $this->findOne(['username' => $username]); } } diff --git a/tests/app/Repositories/UserRepositoryInterface.php b/tests/app/Repositories/UserRepositoryInterface.php new file mode 100644 index 00000000..e0fbfc2f --- /dev/null +++ b/tests/app/Repositories/UserRepositoryInterface.php @@ -0,0 +1,11 @@ +