From 6df213be2098ef5722e5c6a47c065bf3dbba9e30 Mon Sep 17 00:00:00 2001 From: Robert Date: Wed, 28 Dec 2022 19:32:18 -0500 Subject: [PATCH] Removed help_load/save and made model. --- src/classes/database/help_load.php | 30 -------- .../database/{help_save.php => model.php} | 71 ++++++++++++++----- 2 files changed, 53 insertions(+), 48 deletions(-) delete mode 100644 src/classes/database/help_load.php rename src/classes/database/{help_save.php => model.php} (84%) diff --git a/src/classes/database/help_load.php b/src/classes/database/help_load.php deleted file mode 100644 index c20611f..0000000 --- a/src/classes/database/help_load.php +++ /dev/null @@ -1,30 +0,0 @@ -pdo = $pdo; - $this->table = $table; - } - public function saved(bool $worked = true): bool { if (headers_sent()) { return false; @@ -149,8 +142,6 @@ final class help_save { return $this->missing; } - /* From old Model code: */ - public function get_member(string $member) { return $this->members[$member] ?? null; } @@ -208,6 +199,51 @@ final class help_save { return $bind; } + public static function empty_generator(): \Generator { + yield from []; + } + + /** + * Please use this fetch_lazy instead of fetch_all!!! + * To AVOID running out of Memory!!!!!!!!!!!!!!!!!!!! + * @param \PDOStatement $stmt + * @return \Generator + */ + public static function pdo_fetch_lazy(\PDOStatement $stmt): \Generator { + foreach($stmt as $record) { + yield $record; + } + } + + public static function is_valid(array $data): bool { + $error_count = (isset($data['errors'])) ? count($data['errors']) : 0; + return ($error_count === 0); + } + + + public function load(int $id): bool{ + if (method_exists($this, 'pre_load')) { + $this->pre_load(); + } + + $sql = "SELECT * FROM {$this->table} WHERE {$this->primaryKey} = ?"; + $query = $this->pdo->prepare($sql); + $query->execute(array($id)); + if ($query === false) { + return false; + } + $data = $query->fetch(\PDO::FETCH_ASSOC); + if ($data === false) { + return false; + } + $this->members = array_merge($this->members, $data); + + if (method_exists($this, 'post_load')) { + $this->post_load(); + } + return true; + } + public function insert($table, $info) { $fields = $this->filter($table, $info); @@ -269,10 +305,9 @@ final class help_save { * Insert if primary key not set * Update if primary key set */ - public function save(object $local_model=null, bool $validate = true): int { - - if (method_exists($local_model, 'pre_save')) { - $pre_was_successfull = $local_model->pre_save(); + public function save(bool $validate = true): int { + if (method_exists($this, 'pre_save')) { + $pre_was_successfull = $this->pre_save(); if (! $pre_was_successfull) { return self::pre_save_failed; } @@ -289,8 +324,8 @@ final class help_save { } if (empty($this->members[$this->primary_key])) { - if (method_exists($local_model, 'duplicate_check')) { - $dup = $local_model->duplicate_check(); + if (method_exists($this, 'duplicate_check')) { + $dup = $this->duplicate_check(); if ($dup) { return self::duplicate_found; } @@ -308,8 +343,8 @@ final class help_save { )); } - if (method_exists($local_model, 'post_save')) { - $post_save_successfull = $local_model->post_save(); + if (method_exists($this, 'post_save')) { + $post_save_successfull = $this->post_save(); if (! $post_save_successfull) { return self::post_save_failed; }