From a6eaaece177b7755c2e1fae329f39e8e86cf39b5 Mon Sep 17 00:00:00 2001 From: Syndamia Date: Sat, 18 Jan 2025 20:41:09 +0200 Subject: feat(models): Implement database model with User table binding --- models/database.php | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 models/database.php diff --git a/models/database.php b/models/database.php new file mode 100644 index 0000000..ad0c574 --- /dev/null +++ b/models/database.php @@ -0,0 +1,50 @@ +query("SELECT * FROM Users WHERE Username = \"$username\""); + // TODO: research if this is enough to close the connection, $query may store a reference + $conn = null; + + if ($query->rowCount() == 0) { + throw new Exception("User $username doesn't exist!"); + } + assert($query->rowCount() == 1, "Users must have unique usernames!"); + + $query->setFetchMode(PDO::FETCH_CLASS, "User"); + return $query->fetch(); + } + + static function create(string $Username, string $Password, string $Role) { + $conn = connect(); + $query = $conn->query("INSERT INTO Users (Username, Password, Role) VALUES (\"$Username\", \"$Password\", \"$Role\")"); + $conn = null; + } + + static function get_all() : array { + $conn = connect(); + $query = $conn->query("SELECT * FROM Users"); + $conn = null; + + $query->setFetchMode(PDO::FETCH_CLASS, "Database\User"); + return $query->fetchAll(); + } +} + +function connect() : PDO { + $conn = new PDO( + "mysql:unix_socket=" . getenv('MYSQL_UNIX_SOCKET') . ";dbname=nwfh", + getenv('USER'), + ""); + // set the PDO error mode to exception + $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + return $conn; +} -- cgit v1.2.3