From 8f5a57ee54d578e9e4ad77f9a50eea7845aaee70 Mon Sep 17 00:00:00 2001 From: tracer Date: Thu, 22 Sep 2022 19:11:04 +0200 Subject: [PATCH] made all methods use objects instead of single parameters --- src/Repository/PanelRepository.php | 449 +++++++++++++++-------------- 1 file changed, 227 insertions(+), 222 deletions(-) diff --git a/src/Repository/PanelRepository.php b/src/Repository/PanelRepository.php index c3d80b9..1b7c698 100644 --- a/src/Repository/PanelRepository.php +++ b/src/Repository/PanelRepository.php @@ -3,7 +3,6 @@ namespace App\Repository; use App\Controller\DatabaseConnection; -use App\Entity\Domain; use App\Entity\Panel; use PDO; use PDOException; @@ -13,243 +12,249 @@ use PDOException; */ class PanelRepository { - public function __construct(private readonly DatabaseConnection $databaseConnection) - {} - - public function findSelf(): array - { - $sql = " - SELECT id, name, a, aaaa, apikey, self + public function __construct(private readonly DatabaseConnection $databaseConnection) + { + // no body + } + + /** + * @return array|null + */ + public function findSelf(): ?array + { + $sql = " + SELECT id, name, a, aaaa, apikey, apikey_prefix, self FROM " . DatabaseConnection::TABLE_PANELS . " WHERE self = 1"; - - $panels = []; - try { - $statement = $this->databaseConnection->getConnection()->prepare(query: $sql); - $statement->execute(); - while ($result = $statement->fetch(mode: PDO::FETCH_ASSOC)) { - $panel = new Panel(name: $result['name'], id: $result['id'], a: $result['a'], aaaa: $result['aaaa'], apikey: $result['apikey'], self: $result['self']); - $panels[] = $panel; - } - return $panels; - } catch (PDOException $e) { - exit($e->getMessage()); - } - - - } - - /** - * @return array - */ - public function findAll(): array - { - $panels = []; - $sql = " - SELECT id, name, a, aaaa, apikey, self + + $panels = []; + + $statement = $this->databaseConnection->getConnection()->prepare(query: $sql); + $statement->execute(); + while ($result = $statement->fetch(mode: PDO::FETCH_ASSOC)) { + $panel = new Panel(name: $result['name'], id: $result['id'], a: $result['a'], aaaa: $result['aaaa'], apikey: $result['apikey'], apikeyPrefix: $result['apikey_prefix'], self: $result['self']); + $panels[] = $panel; + } + return $panels; + } + + + public function findAll(): ?array + { + $panels = []; + $sql = " + SELECT id, name, a, aaaa, apikey, apikey_prefix, self FROM " . DatabaseConnection::TABLE_PANELS . " ORDER BY name"; - - try { - $statement = $this->databaseConnection->getConnection()->prepare(query: $sql); - $statement->execute(); - while ($result = $statement->fetch(mode: PDO::FETCH_ASSOC)) { - $panel = new Panel(name: $result['name'], id: $result['id'], a: $result['a'], aaaa: $result['aaaa'], apikey: $result['apikey'], self: $result['self']); - $panels[] = $panel; - } - return $panels; - } catch (PDOException $e) { - exit($e->getMessage()); - } - } - - - /** - * @param int $id - * - * @return null|\App\Entity\Panel - */ - public function findByID(int $id): ?Panel - { - $sql = " - SELECT id, name, a, aaaa, apikey, self + + try { + $statement = $this->databaseConnection->getConnection()->prepare(query: $sql); + $statement->execute(); + while ($result = $statement->fetch(mode: PDO::FETCH_ASSOC)) { + $panel = new Panel(name: $result['name'], id: $result['id'], a: $result['a'], aaaa: $result['aaaa'], apikey: $result['apikey'], apikeyPrefix: $result['apikey_prefix'], self: $result['self']); + $panels[] = $panel; + } + return $panels; + } catch (PDOException $e) { + exit($e->getMessage()); + } + } + + + /** + * @param int $id + * + * @return null|Panel + */ + public function findByID(int $id): ?Panel + { + $sql = " + SELECT id, name, a, aaaa, apikey, apikey_prefix, self FROM . " . DatabaseConnection::TABLE_PANELS . " WHERE id = :id"; - - try { - $statement = $this->databaseConnection->getConnection()->prepare(query: $sql); - $statement->bindParam(param: ':id', var: $id); - $statement->execute(); - if ($result = $statement->fetch(mode: PDO::FETCH_ASSOC)) { - return new Panel(name: $result['name'], a: $result['a'], aaaa: $result['aaaa'], apikey: $result['apikey'], self: $result['self']); - } else { - return null; - } - } catch (PDOException $e) { - exit($e->getMessage()); - } - } - - - /** - * @param String $name - * - * @return \App\Entity\Panel|bool - */ - public function findByName(string $name): Panel|bool - { - $sql = " - SELECT id, name, a, aaaa, apikey, self + + try { + $statement = $this->databaseConnection->getConnection()->prepare(query: $sql); + $statement->bindParam(param: ':id', var: $id); + $statement->execute(); + if ($result = $statement->fetch(mode: PDO::FETCH_ASSOC)) { + return new Panel(name: $result['name'], a: $result['a'], aaaa: $result['aaaa'], apikey: $result['apikey'], apikeyPrefix: $result['apikey_prefix'], self: $result['self']); + } else { + return null; + } + } catch (PDOException $e) { + exit($e->getMessage()); + } + } + + + /** + * @param String $name + * + * @return Panel|null + */ + public function findByName(string $name): ?Panel + { + $sql = " + SELECT id, name, a, aaaa, apikey, apikey_prefix, self FROM " . DatabaseConnection::TABLE_PANELS . " WHERE name = :name"; - - try { - $statement = $this->databaseConnection->getConnection()->prepare(query: $sql); - $statement->bindParam(param: ':name', var: $name); - $statement->execute(); - if ($result = $statement->fetch(mode: PDO::FETCH_ASSOC)) { - return new Panel(name: $result['name'], a: $result['a'], aaaa: $result['aaaa'], apikey: $result['apikey'], self: $result['self']); - } else { - return false; - } - } catch (PDOException $e) { - exit($e->getMessage()); - } - } - - - /** - * @param String $name - * @param String $a - * @param String $aaaa - * @param String $apikey - * - * @return string|false - */ - public function insert(string $name, string $a, string $aaaa, String $apikey, int $self): bool|string - { - $sql = " - INSERT INTO " . DatabaseConnection::TABLE_PANELS . " (name, a, aaaa, apikey, self) - VALUES (:name, :a, :aaaa, :apikey, :self)"; - - try { - $statement = $this->databaseConnection->getConnection()->prepare(query: $sql); - $statement->bindParam(param: ':name', var: $name); - $statement->bindParam(param: ':a', var: $a); - $statement->bindParam(param: ':aaaa', var: $aaaa); - $statement->bindParam(param: ':apikey', var: $apikey); - $statement->bindParam(param: ':self', var: $self); - $statement->execute(); - - return $this->databaseConnection->getConnection()->lastInsertId(); - } catch (PDOException $e) { - exit($e->getMessage()); - } - } - - - /** - * @param Int $id - * @param String $name - * @param String $a - * @param String $aaaa - * @param String $apikey - * - * @return false|int - */ - public function update(int $id, string $name, string $a, string $aaaa, String $apikey, int $self): bool|int - { - $current = $this->findByID(id: $id); - - if (empty($name)) { - $name = $current->getName(); - } - if (empty($a)) { - $a = $current->getA(); - } - if (empty($aaaa)) { - $aaaa = $current->getAaaa(); - } - if (empty($apikey)) { - $apikey = $current->getApikey(); - } - - if (empty($self)) { - echo "self is empty"; - $self = $current->getSelf(); - } else { - if ($self == -1) { - $self = 0; - } - } - - $sql = " + + try { + $statement = $this->databaseConnection->getConnection()->prepare(query: $sql); + $statement->bindParam(param: ':name', var: $name); + $statement->execute(); + if ($result = $statement->fetch(mode: PDO::FETCH_ASSOC)) { + return new Panel(name: $result['name'], a: $result['a'], aaaa: $result['aaaa'], apikey: $result['apikey'], apikeyPrefix: $result['apikey_prefix'], self: $result['self']); + } else { + return null; + } + } catch (PDOException $e) { + exit($e->getMessage()); + } + } + + + /** + * @param Panel $panel + * @return int|null + */ + public function insert(Panel $panel): ?int + { + $name = $panel->getName(); + $a = $panel->getA(); + $aaaa = $panel->getAaaa(); + $apikey = $panel->getApikey(); + $apikeyPrefix = $panel->getApikeyPrefix(); + $self = $panel->getSelf(); + + $sql = " + INSERT INTO " . DatabaseConnection::TABLE_PANELS . " (name, a, aaaa, apikey, apikey_prefix, self) + VALUES (:name, :a, :aaaa, :apikey, :prefix, :self)"; + + try { + $statement = $this->databaseConnection->getConnection()->prepare(query: $sql); + $statement->bindParam(param: ':name', var: $name); + $statement->bindParam(param: ':a', var: $a); + $statement->bindParam(param: ':aaaa', var: $aaaa); + $statement->bindParam(param: ':apikey', var: $apikey); + $statement->bindParam(param: ':prefix', var: $apikeyPrefix); + $statement->bindParam(param: ':self', var: $self); + $statement->execute(); + + return intval(value: $this->databaseConnection->getConnection()->lastInsertId()); + } catch (PDOException $e) { + exit($e->getMessage()); + } + } + + + /** + * @param Panel $panel + * @return int|null + */ + public function update(Panel $panel): ?int + { + $id = $panel->getId(); + $name = $panel->getName(); + $a = $panel->getA(); + $aaaa = $panel->getAaaa(); + $apikey = $panel->getApikey(); + $apikeyPrefix = $panel->getApikeyPrefix(); + $passphrase = $panel->getPassphrase(); + + $current = $this->findByID(id: $id); + + + if (empty($name)) { + $name = $current->getName(); + } + if (empty($a)) { + $a = $current->getA(); + } + if (empty($aaaa)) { + $aaaa = $current->getAaaa(); + } + + if (empty($passphrase)) { + $apikey = $current->getApikey(); + $apikeyPrefix = $current->getApikeyPrefix(); + } + + if (empty($self)) { + $self = $current->getSelf(); + } + + + $sql = " UPDATE " . DatabaseConnection::TABLE_PANELS . " SET name = :name, a = :a, aaaa = :aaaa, apikey = :apikey, + apikey_prefix = :apikey_prefix, self = :self WHERE id = :id"; - - try { - $statement = $this->databaseConnection->getConnection()->prepare(query: $sql); - $statement->bindParam(param: 'id', var: $id); - $statement->bindParam(param: 'name', var: $name); - $statement->bindParam(param: 'a', var: $a); - $statement->bindParam(param: 'aaaa', var: $aaaa); - $statement->bindParam(param: 'apikey', var: $apikey); - $statement->bindParam(param: 'self', var: $self); - $statement->execute(); - - return $statement->rowCount(); - } catch (PDOException $e) { - echo $e->getMessage(); - return false; - } - } - - - /** - * @param $id - * - * @return int - */ - public function delete($id): int - { - $sql = " + + try { + $statement = $this->databaseConnection->getConnection()->prepare(query: $sql); + $statement->bindParam(param: 'id', var: $id); + $statement->bindParam(param: 'name', var: $name); + $statement->bindParam(param: 'a', var: $a); + $statement->bindParam(param: 'aaaa', var: $aaaa); + $statement->bindParam(param: 'apikey', var: $apikey); + $statement->bindParam(param: 'apikey_prefix', var: $apikeyPrefix); + $statement->bindParam(param: 'self', var: $self); + $statement->execute(); + + return intval(value: $statement->rowCount()); + } catch (PDOException $e) { + echo $e->getMessage(); + return null; + } + } + + + /** + * @param $id + * + * @return int|null + */ + public function delete($id): ?int + { + $sql = " DELETE FROM " . DatabaseConnection::TABLE_PANELS . " WHERE id = :id"; - - try { - $statement = $this->databaseConnection->getConnection()->prepare(query: $sql); - $statement->bindParam(param: 'id', var: $id); - $statement->execute(); - - return $statement->rowCount(); - } catch (PDOException $e) { - exit($e->getMessage()); - } - } - - - /** - * @param String $field - * - * @return int - */ - public function getLongestEntry(String $field): int - { - $sql = " + + try { + $statement = $this->databaseConnection->getConnection()->prepare(query: $sql); + $statement->bindParam(param: 'id', var: $id); + $statement->execute(); + + return intval(value: $statement->rowCount()); + } catch (PDOException $e) { + exit($e->getMessage()); + } + } + + + /** + * @param String $field + * + * @return int|null + */ + public function getLongestEntry(string $field): ?int + { + $sql = " SELECT MAX(LENGTH(" . $field . ")) as length FROM " . DatabaseConnection::TABLE_PANELS; - - try { - $statement = $this->databaseConnection->getConnection()->prepare(query: $sql); - $statement->execute(); - $result = $statement->fetch(); - return $result['length']; - } catch (PDOException $e) { - exit($e->getMessage()); - } - } + + try { + $statement = $this->databaseConnection->getConnection()->prepare(query: $sql); + $statement->execute(); + $result = $statement->fetch(); + return $result['length']; + } catch (PDOException $e) { + exit($e->getMessage()); + } + } }