diff --git a/persistence.php b/persistence.php index 91c04ae..9a3f8b1 100644 --- a/persistence.php +++ b/persistence.php @@ -2,14 +2,47 @@ createDB(); -function createDB() -{ +function createDB(): SQLite3 { $db = new SQLite3('guestbook.db'); - $db->exec("CREATE TABLE user - (id_user INTEGER PRIMARY KEY, username TEXT NOT NULL UNIQUE, password TEXT)"); - $db->exec("CREATE TABLE message - (id_msg INTEGER PRIMARY KEY, id_user INT, content TEXT NOT NULL, - FOREIGN KEY (id_user) REFERENCES user (id_user))"); + $db->exec('CREATE TABLE user + (id_user INTEGER PRIMARY KEY, + username TEXT NOT NULL UNIQUE, + password TEXT)' + ); + $db->exec('CREATE TABLE message + (id_msg INTEGER PRIMARY KEY, + id_user INT, + content TEXT NOT NULL, + date INT, + FOREIGN KEY (id_user) REFERENCES user (id_user))' + ); + return $db; } +// getMessages(['id' => 34, 'since' => 383489289424]) +function getMessages(SQLite3 $db, int $limit = 25, array $filter = []) { + // Apply filters + $append_string = ''; + $verb = 'WHERE'; + + foreach ($filter as $key => $value) { + $to_append = match($key) { + 'id_msg' => "$verb $key IN (:$key)", + // TODO + }; + if ($to_append) { + $append_string .= " $to_append"; + $verb = 'AND'; + } + } + + $query = 'SELECT * FROM message' . $append_string; + $statement = $db->prepare($query); + + foreach ($filter as $key => $value) { + $statement->bindValue($key, $value); + } + + return $statement->execute(); +}