From bc07f55f3c8819233e6a5089a7a89da7c193eb58 Mon Sep 17 00:00:00 2001 From: Roboxon <145359440+roboxon@users.noreply.github.com> Date: Sat, 18 Nov 2023 22:31:51 +0100 Subject: [PATCH] Query Builder Extends Pdo Query --- src/database/QueryBuilder.php | 26 +++++++--------- src/database/QueryBuilderInterface.php | 2 +- src/database/query/Delete.php | 10 +++---- src/database/query/Insert.php | 8 ++--- src/database/query/Select.php | 41 ++++++++++++-------------- src/database/query/Update.php | 9 +++--- 6 files changed, 44 insertions(+), 52 deletions(-) diff --git a/src/database/QueryBuilder.php b/src/database/QueryBuilder.php index 9918afd..b6b0bde 100644 --- a/src/database/QueryBuilder.php +++ b/src/database/QueryBuilder.php @@ -1,25 +1,21 @@ - * Dariusz Rumiński - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - namespace GemLibrary\Database; +use GemLibrary\Database\PdoQuery; use GemLibrary\Database\Query\Delete; use GemLibrary\Database\Query\Insert; use GemLibrary\Database\Query\Select; use GemLibrary\Database\Query\Update; -class QueryBuilder +class QueryBuilder extends PdoQuery { - public static function select(string ...$select): Select + public function __construct() + { + parent::__construct(); + } + + public function select(string ...$select): Select { return new Select($select); } @@ -27,7 +23,7 @@ public static function select(string ...$select): Select /** * @param string $intoTable */ - public static function insert(string $intoTable): Insert + public function insert(string $intoTable): Insert { return new Insert($intoTable); } @@ -35,7 +31,7 @@ public static function insert(string $intoTable): Insert /** * @param string $table */ - public static function update(string $table): Update + public function update(string $table): Update { return new Update($table); } @@ -44,7 +40,7 @@ public static function update(string $table): Update * @param string $table * Delete from table */ - public static function delete(string $table): Delete + public function delete(string $table): Delete { return new Delete($table); } diff --git a/src/database/QueryBuilderInterface.php b/src/database/QueryBuilderInterface.php index 15f58b5..167d0a2 100644 --- a/src/database/QueryBuilderInterface.php +++ b/src/database/QueryBuilderInterface.php @@ -14,5 +14,5 @@ interface QueryBuilderInterface { - public function run(PdoQuery $pdoQuery): mixed; + public function run(): mixed; } diff --git a/src/database/query/Delete.php b/src/database/query/Delete.php index 37ddb4d..23333e2 100644 --- a/src/database/query/Delete.php +++ b/src/database/query/Delete.php @@ -12,11 +12,11 @@ namespace GemLibrary\Database\Query; -use GemLibrary\Database\PdoQuery as DatabasePdoQuery; -use GemLibrary\Database\QueryBuilderInterface; +use GemLibrary\Database\QueryBuilderInterface; +use GemLibrary\Database\QueryBuilder; -class Delete implements QueryBuilderInterface +class Delete extends QueryBuilder implements QueryBuilderInterface { use WhereTrait; @@ -50,9 +50,9 @@ public function __toString(): string return $this->_query; } - public function run(DatabasePdoQuery $queryProvider): self + public function run(): self { - $this->result = $queryProvider->deleteQuery($this->_query, $this->arrayBindValues); + $this->result = $this->deleteQuery($this->_query, $this->arrayBindValues); return $this; } diff --git a/src/database/query/Insert.php b/src/database/query/Insert.php index 64b1aad..4d01c1f 100644 --- a/src/database/query/Insert.php +++ b/src/database/query/Insert.php @@ -12,10 +12,10 @@ namespace GemLibrary\Database\Query; -use GemLibrary\Database\PdoQuery; use GemLibrary\Database\QueryBuilderInterface; +use GemLibrary\Database\QueryBuilder; -class Insert implements QueryBuilderInterface +class Insert extends QueryBuilder implements QueryBuilderInterface { /** * @var null|int @@ -84,9 +84,9 @@ public function values(mixed ...$values): self return $this; } - public function run(PdoQuery $queryProvider): self + public function run(): self { - $this->result = $queryProvider->insertQuery($this->_query, $this->keyValue); + $this->result = $this->insertQuery($this->_query, $this->keyValue); return $this; } diff --git a/src/database/query/Select.php b/src/database/query/Select.php index 6c18343..d21c5e1 100644 --- a/src/database/query/Select.php +++ b/src/database/query/Select.php @@ -1,22 +1,10 @@ - * Dariusz Rumiński - * This source file is subject to the MIT license that is bundled - * with this source code in the file LICENSE. - */ - namespace GemLibrary\Database\Query; -use GemLibrary\Database\PdoQuery; +use GemLibrary\Database\QueryBuilder; use GemLibrary\Database\QueryBuilderInterface; -use GemLibrary\Database\QueryProvider; -class Select implements QueryBuilderInterface +class Select extends QueryBuilder implements QueryBuilderInterface { use LimitTrait; use WhereTrait; @@ -71,6 +59,8 @@ class Select implements QueryBuilderInterface private ?int $offset = null; + //private QueryBuilder $queryBuilder; + /** * @param array $select */ @@ -79,6 +69,13 @@ public function __construct(array $select) $this->fields = $select; } + // public function setQueryBuilder(QueryBuilder $queryBuilder): self + // { + // $this->queryBuilder = $queryBuilder; + + // return $this; + // } + public function __toString(): string { $this->query = $this->selectMaker() . implode(', ', $this->from) @@ -141,24 +138,24 @@ public function leftJoin(string ...$join): self /** * @param QueryProvider $queryProvider */ - public function run(PdoQuery $queryProvider): self + public function run(): self { - $this->result = $queryProvider->selectQuery($this->query, $this->arrayBindValues); + $this->result = $this->selectQuery($this->query, $this->arrayBindValues); return $this; } - public function count(PdoQuery $queryProvider): self + public function count(): self { - $this->result = $queryProvider->countQuery($this->query, $this->arrayBindValues); + $this->result = $this->countQuery($this->query, $this->arrayBindValues); return $this; } - public function json(PdoQuery $queryProvider): self + public function json(): self { $array = []; - $result = $queryProvider->selectQuery($this->query, $this->arrayBindValues); + $result = $this->selectQuery($this->query, $this->arrayBindValues); if (\is_array($result)) { foreach ($result as $item) { $encoded = json_encode($item, JSON_PRETTY_PRINT); @@ -179,10 +176,10 @@ public function json(PdoQuery $queryProvider): self * @param object $object * retrun array of Objects */ - public function object(PdoQuery $queryProvider, object $object): self + public function object(object $object): self { $class = $object::class; - $result = $queryProvider->selectQuery($this->query, $this->arrayBindValues); + $result = $this->selectQuery($this->query, $this->arrayBindValues); if (\is_array($result)) { foreach ($result as $item) { if (\is_array($item)) { diff --git a/src/database/query/Update.php b/src/database/query/Update.php index bb58d30..4c93ec9 100644 --- a/src/database/query/Update.php +++ b/src/database/query/Update.php @@ -11,12 +11,11 @@ */ namespace GemLibrary\Database\Query; +use GemLibrary\Database\QueryBuilder; -use GemLibrary\Database\PdoQuery; use GemLibrary\Database\QueryBuilderInterface; -use GemLibrary\Database\QueryProvider; -class Update implements QueryBuilderInterface +class Update extends QueryBuilder implements QueryBuilderInterface { use WhereTrait; @@ -68,9 +67,9 @@ public function set(string $column, mixed $value): self return $this; } - public function run(PdoQuery $queryProvider): self + public function run(): self { - $this->result = $queryProvider->updateQuery($this->_query, $this->arrayBindValues); + $this->result = $this->updateQuery($this->_query, $this->arrayBindValues); return $this; } }