db = new SQLite3($filename, $flags); } function close(): void { $this->db->close(); } function install(): void { } function add_user($uuid, $email, $password): bool { $stmt = $this->db->prepare("INSERT INTO users (uuid, email, password) VALUES (:uuid, :email, :password);"); $stmt->bindValue(":uuid", $uuid); $stmt->bindValue(":email", $email); $stmt->bindValue(":password", password_hash($password, PASSWORD_DEFAULT)); return $stmt->execute() !== false; } function delete_user($uuid): bool { $stmt = $this->db->prepare("DELETE FROM users WHERE uuid=:uuid;"); $stmt->bindValue(":uuid", $uuid); return $stmt->execute() !== false; } function get_user_by_email($email): array|null { $stmt = $this->db->prepare("SELECT uuid, password FROM users WHERE email=:email;"); $stmt->bindValue(":email", $email); $result = $stmt->execute(); if ($result->numColumns() === 0) { return null; } return $stmt->execute()->fetchArray(SQLITE3_ASSOC); } function set_user_email($uuid, $email): bool { $stmt = $this->db->prepare("UPDATE users SET email=:email WHERE uuid=:uuid;"); $stmt->bindValue(":uuid", $uuid); $stmt->bindValue(":email", $email); return $stmt->execute() !== false; } function set_user_password($uuid, $password): bool { $stmt = $this->db->prepare("UPDATE users SET password=:password WHERE uuid=:uuid;"); $stmt->bindValue(":uuid", $uuid); $stmt->bindValue(":password", $password); return $stmt->execute() !== false; } }