diff --git a/src/app/Data.php b/src/app/Data.php index 96613ae..3043c6d 100644 --- a/src/app/Data.php +++ b/src/app/Data.php @@ -17,8 +17,8 @@ class Data public static function startUp() { Configuration::$connectionString = "pgsql:host=localhost;port=5432;dbname=leafjson;user=leaf;password=leaf"; - Definition::ensureTable(Data::REQ_TABLE); - Definition::ensureIndex(Data::REQ_TABLE, DocumentIndex::Optimized); + Definition::ensureTable(self::REQ_TABLE); + Definition::ensureIndex(self::REQ_TABLE, DocumentIndex::Optimized); } /** @@ -30,7 +30,7 @@ class Data */ public static function findFullRequestById(string $reqId, string $userId): ?Request { - $req = Document::findById(Data::REQ_TABLE, $reqId, Request::class); + $req = Document::findById(self::REQ_TABLE, $reqId, Request::class); return is_null($req) || $req->userId != $userId ? null : $req; } @@ -43,10 +43,10 @@ class Data */ public static function addHistory(string $reqId, string $userId, History $history) { - $req = Data::findFullRequestById($reqId, $userId); + $req = self::findFullRequestById($reqId, $userId); if (is_null($req)) throw new \InvalidArgumentException("$reqId not found"); array_unshift($req->history, $history); - Document::updateFull(Data::REQ_TABLE, $reqId, $req); + Document::updateFull(self::REQ_TABLE, $reqId, $req); } /** @@ -58,10 +58,10 @@ class Data */ public static function addNote(string $reqId, string $userId, Note $note) { - $req = Data::findFullRequestById($reqId, $userId); + $req = self::findFullRequestById($reqId, $userId); if (is_null($req)) throw new \InvalidArgumentException("$reqId not found"); array_unshift($req->notes, $note); - Document::updateFull(Data::REQ_TABLE, $reqId, $req); + Document::updateFull(self::REQ_TABLE, $reqId, $req); } /** @@ -71,7 +71,7 @@ class Data */ public static function addRequest(Request $req) { - Document::insert(Data::REQ_TABLE, $req->id, $req); + Document::insert(self::REQ_TABLE, $req->id, $req); } /** @@ -95,13 +95,13 @@ class Data */ private static function getJournalByAnswered(string $userId, string $op): array { - $sql = Query::selectFromTable(Data::REQ_TABLE) + $sql = Query::selectFromTable(self::REQ_TABLE) . ' WHERE ' . Query::whereDataContains(':criteria') . ' AND ' . Query::whereJsonPathMatches(':path'); $params = [ ':criteria' => Query::jsonbDocParam([ 'userId' => $userId ]), ':path' => '$.history[*].action (@ ' . $op . ' "' . RequestAction::Answered->name . '")' ]; - return Data::mapToJournalRequest( + return self::mapToJournalRequest( Document::customList($sql, $params, Request::class, Document::mapFromJson(...)), true); } @@ -113,7 +113,7 @@ class Data */ public static function getAnsweredRequests(string $userId): array { - $answered = Data::getJournalByAnswered($userId, '=='); + $answered = self::getJournalByAnswered($userId, '=='); usort($answered, AsOf::newestToOldest(...)); return $answered; } @@ -126,7 +126,7 @@ class Data */ public static function getJournal(string $userId): array { - $reqs = data::getJournalByAnswered($userId, '<>'); + $reqs = self::getJournalByAnswered($userId, '<>'); usort($reqs, AsOf::oldestToNewest(...)); return $reqs; } diff --git a/src/app/documents/Configuration.php b/src/app/documents/Configuration.php index 09d1623..953d34f 100644 --- a/src/app/documents/Configuration.php +++ b/src/app/documents/Configuration.php @@ -21,10 +21,10 @@ class Configuration */ public static function getConn(): \PDO { - if (is_null(Configuration::$conn)) { - Configuration::$conn = new \PDO(Configuration::$connectionString); + if (is_null(self::$conn)) { + self::$conn = new \PDO(self::$connectionString); } - return Configuration::$conn; + return self::$conn; } } diff --git a/src/app/documents/Definition.php b/src/app/documents/Definition.php index e7c912a..aa6a41a 100644 --- a/src/app/documents/Definition.php +++ b/src/app/documents/Definition.php @@ -41,7 +41,7 @@ class Definition */ public static function ensureTable(string $name) { - pdo()->query(Definition::createTable($name))->execute(); + pdo()->query(self::createTable($name))->execute(); } /** @@ -52,6 +52,6 @@ class Definition */ public static function ensureIndex(string $name, DocumentIndex $type) { - pdo()->query(Definition::createIndex($name, $type))->execute(); + pdo()->query(self::createIndex($name, $type))->execute(); } } diff --git a/src/app/documents/Document.php b/src/app/documents/Document.php index 13361a1..68e99ea 100644 --- a/src/app/documents/Document.php +++ b/src/app/documents/Document.php @@ -21,12 +21,12 @@ class Document */ public static function mapDocFromJson(string $columnName, array $result, string $className): mixed { - if (is_null(Document::$mapper)) { - Document::$mapper = new \JsonMapper(); + if (is_null(self::$mapper)) { + self::$mapper = new \JsonMapper(); } $mapped = new $className(); - Document::$mapper->map(json_decode($result[$columnName]), $mapped); + self::$mapper->map(json_decode($result[$columnName]), $mapped); return $mapped; } @@ -39,7 +39,7 @@ class Document */ public static function mapFromJson(array $result, string $className): mixed { - return Document::mapDocFromJson('data', $result, $className); + return self::mapDocFromJson('data', $result, $className); } /** @@ -66,7 +66,7 @@ class Document */ public static function insert(string $tableName, string $docId, array|object $document) { - Document::executeNonQuery(Query::insert($tableName), $docId, $document); + self::executeNonQuery(Query::insert($tableName), $docId, $document); } /** @@ -78,7 +78,7 @@ class Document */ public static function save(string $tableName, string $docId, array|object $document) { - Document::executeNonQuery(Query::save($tableName), $docId, $document); + self::executeNonQuery(Query::save($tableName), $docId, $document); } /** @@ -182,7 +182,7 @@ class Document */ private static function mapResults(\PDOStatement $stmt, string $className): array { - return array_map(fn ($it) => Document::mapFromJson($it, $className), $stmt->fetchAll(\PDO::FETCH_ASSOC)); + return array_map(fn ($it) => self::mapFromJson($it, $className), $stmt->fetchAll(\PDO::FETCH_ASSOC)); } /** @@ -194,7 +194,7 @@ class Document */ public static function findAll(string $tableName, string $className): array { - return Document::mapResults(pdo()->query(Query::selectFromTable($tableName)), $className); + return self::mapResults(pdo()->query(Query::selectFromTable($tableName)), $className); } /** @@ -211,7 +211,7 @@ class Document $query->bindParam(':id', $docId); $query->execute(); $result = $query->fetch(\PDO::FETCH_ASSOC); - return $result ? Document::mapFromJson($result, $className) : null; + return $result ? self::mapFromJson($result, $className) : null; } /** @@ -239,7 +239,7 @@ class Document */ public static function findByContains(string $tableName, array|object $criteria, string $className): array { - return Document::mapResults(Document::queryByContains($tableName, $criteria), $className); + return self::mapResults(self::queryByContains($tableName, $criteria), $className); } /** @@ -252,9 +252,9 @@ class Document */ public static function findFirstByContains(string $tableName, array|object $criteria, string $className): mixed { - $query = Document::queryByContains($tableName, $criteria); + $query = self::queryByContains($tableName, $criteria); $result = $query->fetch(\PDO::FETCH_ASSOC); - return $result ? Document::mapFromJson($result, $className) : null; + return $result ? self::mapFromJson($result, $className) : null; } /** @@ -282,7 +282,7 @@ class Document */ public static function findByJsonPath(string $tableName, string $jsonPath, string $className): array { - return Document::mapResults(Document::queryByJsonPath($tableName, $jsonPath), $className); + return self::mapResults(self::queryByJsonPath($tableName, $jsonPath), $className); } /** @@ -295,9 +295,9 @@ class Document */ public static function findFirstByJsonPath(string $tableName, string $jsonPath, string $className): mixed { - $query = Document::queryByJsonPath($tableName, $jsonPath); + $query = self::queryByJsonPath($tableName, $jsonPath); $result = $query->fetch(\PDO::FETCH_ASSOC); - return $result ? Document::mapFromJson($result, $className) : null; + return $result ? self::mapFromJson($result, $className) : null; } /** @@ -309,7 +309,7 @@ class Document */ public static function updateFull(string $tableName, string $docId, array|object $document) { - Document::executeNonQuery(Query::updateFull($tableName), $docId, $document); + self::executeNonQuery(Query::updateFull($tableName), $docId, $document); } /** @@ -321,7 +321,7 @@ class Document */ public static function updatePartialById(string $tableName, string $docId, array|object $document) { - Document::executeNonQuery(Query::updatePartialById($tableName), $docId, $document); + self::executeNonQuery(Query::updatePartialById($tableName), $docId, $document); } /** @@ -362,7 +362,7 @@ class Document */ public static function deleteById(string $tableName, string $docId) { - Document::executeNonQuery(Query::deleteById($tableName), $docId, []); + self::executeNonQuery(Query::deleteById($tableName), $docId, []); } /** @@ -423,7 +423,7 @@ class Document { return array_map( fn ($it) => $mapFunc($it, $className), - Document::createCustomQuery($sql, $params)->fetchAll(\PDO::FETCH_ASSOC)); + self::createCustomQuery($sql, $params)->fetchAll(\PDO::FETCH_ASSOC)); } /** @@ -437,7 +437,7 @@ class Document */ public static function customSingle(string $sql, array $params, string $className, callable $mapFunc): mixed { - $result = Document::createCustomQuery($sql, $params)->fetch(\PDO::FETCH_ASSOC); + $result = self::createCustomQuery($sql, $params)->fetch(\PDO::FETCH_ASSOC); return $result ? $mapFunc($result, $className) : null; } @@ -449,6 +449,6 @@ class Document */ public static function customNonQuery(string $sql, array $params) { - Document::createCustomQuery($sql, $params); + self::createCustomQuery($sql, $params); } } diff --git a/src/app/documents/Query.php b/src/app/documents/Query.php index d608f6d..0d6939e 100644 --- a/src/app/documents/Query.php +++ b/src/app/documents/Query.php @@ -85,7 +85,7 @@ class Query */ public static function countAll(string $tableName): string { - return "SELECT COUNT(id) AS it FROM $tableName"; + return "SELECT COUNT(*) AS it FROM $tableName"; } /** @@ -96,7 +96,7 @@ class Query */ public static function countByContains(string $tableName): string { - return "SELECT COUNT(id) AS it FROM $tableName WHERE " . Query::whereDataContains('@criteria'); + return "SELECT COUNT(*) AS it FROM $tableName WHERE " . self::whereDataContains('@criteria'); } /** @@ -107,7 +107,7 @@ class Query */ public static function countByJsonPath(string $tableName): string { - return "SELECT COUNT(id) AS it FROM $tableName WHERE " . Query::whereJsonPathMatches('@path'); + return "SELECT COUNT(*) AS it FROM $tableName WHERE " . self::whereJsonPathMatches('@path'); } /** @@ -129,7 +129,7 @@ class Query */ public static function existsByContains(string $tableName): string { - return "SELECT EXISTS (SELECT 1 FROM $tableName WHERE " . Query::whereDataContains('@criteria') . ' AS it'; + return "SELECT EXISTS (SELECT 1 FROM $tableName WHERE " . self::whereDataContains('@criteria') . ' AS it'; } /** @@ -140,7 +140,7 @@ class Query */ public static function existsByJsonPath(string $tableName): string { - return "SELECT EXISTS (SELECT 1 FROM $tableName WHERE " . Query::whereJsonPathMatches('@path') . ' AS it'; + return "SELECT EXISTS (SELECT 1 FROM $tableName WHERE " . self::whereJsonPathMatches('@path') . ' AS it'; } /** @@ -151,7 +151,7 @@ class Query */ public static function findById(string $tableName): string { - return Query::selectFromTable($tableName) . ' WHERE id = :id'; + return self::selectFromTable($tableName) . ' WHERE id = :id'; } /** @@ -162,7 +162,7 @@ class Query */ public static function findByContains(string $tableName): string { - return Query::selectFromTable($tableName) . ' WHERE ' . Query::whereDataContains('@criteria'); + return self::selectFromTable($tableName) . ' WHERE ' . self::whereDataContains('@criteria'); } /** @@ -173,7 +173,7 @@ class Query */ public static function findByJsonPath(string $tableName): string { - return Query::selectFromTable($tableName) . ' WHERE ' . Query::whereJsonPathMatches('@path'); + return self::selectFromTable($tableName) . ' WHERE ' . self::whereJsonPathMatches('@path'); } /** @@ -206,7 +206,7 @@ class Query */ public static function updatePartialByContains(string $tableName): string { - return "UPDATE $tableName SET data = data || @data WHERE " . Query::whereDataContains('@criteria'); + return "UPDATE $tableName SET data = data || @data WHERE " . self::whereDataContains('@criteria'); } /** @@ -217,7 +217,7 @@ class Query */ public static function updatePartialByJsonPath(string $tableName): string { - return "UPDATE $tableName SET data = data || @data WHERE " . Query::whereJsonPathMatches('@path'); + return "UPDATE $tableName SET data = data || @data WHERE " . self::whereJsonPathMatches('@path'); } /** @@ -239,7 +239,7 @@ class Query */ public static function deleteByContains(string $tableName): string { - return "DELETE FROM $tableName WHERE " . Query::whereDataContains('@criteria'); + return "DELETE FROM $tableName WHERE " . self::whereDataContains('@criteria'); } /** @@ -250,6 +250,6 @@ class Query */ public static function deleteByJsonPath(string $tableName): string { - return "DELETE FROM $tableName WHERE " . Query::whereJsonPathMatches('@path'); + return "DELETE FROM $tableName WHERE " . self::whereJsonPathMatches('@path'); } }