From 9834eb70a46283c8d381e675308053bb48602d7e Mon Sep 17 00:00:00 2001 From: Aldarien Date: Fri, 9 Sep 2022 13:15:11 -0400 Subject: [PATCH 1/2] Use full class name without having to specify namespace beforehand --- src/Concept/Model/Factory.php | 4 +--- src/Implement/Model/Factory.php | 21 ++------------------- 2 files changed, 3 insertions(+), 22 deletions(-) diff --git a/src/Concept/Model/Factory.php b/src/Concept/Model/Factory.php index d92b166..8e1f566 100644 --- a/src/Concept/Model/Factory.php +++ b/src/Concept/Model/Factory.php @@ -7,7 +7,5 @@ interface Factory { public function setContainer(ContainerInterface $container): Factory; public function getContainer(): ContainerInterface; - public function setNamespace(string $namespace): Factory; - public function getNamespace(): string; - public function get(string $repository_name): Repository; + public function get(string $repository_class): Repository; } diff --git a/src/Implement/Model/Factory.php b/src/Implement/Model/Factory.php index c5472f9..c172593 100644 --- a/src/Implement/Model/Factory.php +++ b/src/Implement/Model/Factory.php @@ -22,25 +22,8 @@ class Factory implements FactoryInterface { return $this->container; } - protected string $namespace; - public function setNamespace(string $namespace): FactoryInterface + public function get(string $repository_class): Repository { - $this->namespace = $namespace; - return $this; - } - public function getNamespace(): string - { - return $this->namespace; - } - protected function buildRepository(string $repository_name): string - { - return implode("\\", [ - $this->getNamespace(), - $repository_name - ]); - } - public function get(string $repository_name): Repository - { - return $this->getContainer()->get($this->buildRepository($repository_name)); + return $this->getContainer()->get($repository_class); } } From 3811e8224be09b26e5822b0f73c088631a3aafef Mon Sep 17 00:00:00 2001 From: Aldarien Date: Fri, 9 Sep 2022 13:15:27 -0400 Subject: [PATCH 2/2] Define and Implement delete --- src/Alias/Model.php | 4 ++++ src/Alias/Model/Repository.php | 6 ++++++ src/Concept/Model.php | 1 + src/Concept/Model/Repository.php | 1 + 4 files changed, 12 insertions(+) diff --git a/src/Alias/Model.php b/src/Alias/Model.php index b96b4c2..ea3dd91 100644 --- a/src/Alias/Model.php +++ b/src/Alias/Model.php @@ -61,4 +61,8 @@ abstract class Model implements ModelInterface } $this->isDirty(); } + public function delete(): void + { + $this->getFactory()->get(get_class($this))->delete($this); + } } diff --git a/src/Alias/Model/Repository.php b/src/Alias/Model/Repository.php index 69767b3..084493a 100644 --- a/src/Alias/Model/Repository.php +++ b/src/Alias/Model/Repository.php @@ -100,6 +100,12 @@ abstract class Repository implements RepositoryInterface } return $model; } + public function delete(Model $model): void + { + $query = $this->getQueryBuilder()->delete($this->getTable())->where(['id = ?']); + $this->getConnection()->execute($query, [$model->getId()]); + } + public function fetchById(int $id): Model { $query = $this->getQueryBuilder() diff --git a/src/Concept/Model.php b/src/Concept/Model.php index d6f836d..d58d7ce 100644 --- a/src/Concept/Model.php +++ b/src/Concept/Model.php @@ -15,4 +15,5 @@ interface Model public function isDirty(): bool; public function save(): void; public function edit(array $data): void; + public function delete(): void; } diff --git a/src/Concept/Model/Repository.php b/src/Concept/Model/Repository.php index 9e5c9b9..c31de6a 100644 --- a/src/Concept/Model/Repository.php +++ b/src/Concept/Model/Repository.php @@ -23,6 +23,7 @@ interface Repository public function save(Model $model): void; public function edit(Model $model, array $data): Model; public function create(array $data): Model; + public function delete(Model $model): void; public function fetchById(int $id): Model; public function fetchAll(): array; }