Compare commits

...

7 Commits

@ -58,58 +58,69 @@ class Database {
*/
private function checkAndCreateTables() {
// Create tables
$usersTableQuery = "CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
$usersTableQuery = "CREATE TABLE IF NOT EXISTS Users (
User_ID INT AUTO_INCREMENT PRIMARY KEY,
Username VARCHAR(50) NOT NULL,
Email VARCHAR(100) NOT NULL UNIQUE,
Password VARCHAR(255) NOT NULL,
Created_At TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;";
if (!$this->connection->query($usersTableQuery)) {
if (!$this->connection->query($UsersTableQuery)) {
die("Failed to create users table: " . $this->connection->error);
}
$journalTableQuery = "CREATE TABLE IF NOT EXISTS journal (
id INT AUTO_INCREMENT PRIMARY KEY,
year INT NOT NULL,
user_id INT NOT NULL,
$journalTableQuery = "CREATE TABLE IF NOT EXISTS Journal (
Journal_ID INT AUTO_INCREMENT PRIMARY KEY,
Year INT NOT NULL,
User_ID INT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
FOREIGN KEY (User_ID) REFERENCES Users(User_ID) ON DELETE CASCADE
) ENGINE=InnoDB;";
if (!$this->connection->query($usersTableQuery)) {
if (!$this->connection->query($JournalTableQuery)) {
die("Failed to create journal table: " . $this->connection->error);
}
$challengesTableQuery = "CREATE TABLE IF NOT EXISTS challenges (
id INT AUTO_INCREMENT PRIMARY KEY,
journal_id INT NOT NULL,
booksgoal INT NOT NULL,
$challengesTableQuery = "CREATE TABLE IF NOT EXISTS Challenge (
Challenge_ID INT AUTO_INCREMENT PRIMARY KEY,
Journal_ID INT NOT NULL,
Books_Goal INT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (journal_id) REFERENCES journal(id) ON DELETE CASCADE
FOREIGN KEY (Journal_ID) REFERENCES Journal(Journal_ID) ON DELETE CASCADE
) ENGINE=InnoDB;";
if (!$this->connection->query($usersTableQuery)) {
if (!$this->connection->query($ChallengeTableQuery)) {
die("Failed to create challenges table: " . $this->connection->error);
}
$bookrecordsTableQuery = "CREATE TABLE IF NOT EXISTS bookrecords (
id INT AUTO_INCREMENT PRIMARY KEY,
journal_id INT NOT NULL,
author VARCHAR(128) NOT NULL,
name VARCHAR(128) NOT NULL,
page_count INT NOT NULL,
status ENUM('tbr', 'reading', 'read'),
favorite BOOLEAN DEFAULT FALSE NOT NULL,
finished TIMESTAMP NULL,
genre varchar(32) NOT NULL,
placement TINYINT NULL CHECK (placement BETWEEN 1 AND 12)
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (journal_id) REFERENCES journal(id) ON DELETE CASCADE
) ENGINE=InnoDB;";
if (!$this->connection->query($usersTableQuery)) {
$bookrecordsTableQuery = "CREATE TABLE IF NOT EXISTS BookRecords (
Record_ID INT AUTO_INCREMENT PRIMARY KEY,
Journal_ID INT NOT NULL,
User_ID INT NOT NULL,
Author VARCHAR(128) NOT NULL,
Name VARCHAR(128) NOT NULL,
Length INT NOT NULL,
Status ENUM('TBR', 'Reading', 'Read') NOT NULL,
Favourite TINYINT,
Finished DATE NULL,
Genre ENUM(
'Adventure', 'Science Fiction', 'Fantasy', 'Mystery', 'Thriller', 'Horror',
'Romance', 'Historical Fiction', 'Dystopian', 'Crime', 'Contemporary Fiction',
'Magical Realism', 'Paranormal', 'Literary Fiction', 'True Crime',
'Young Adult (YA)', 'New Adult (NA)', 'Children''s Fiction', 'Military Fiction',
'Western', 'Coming of Age', 'Political Fiction', 'LGBTQ+ Fiction'
) NOT NULL,
Placement TINYINT NULL,
Placement2month TINYINT NULL,
Placement_Semifinals TINYINT NULL,
Placement_Finals TINYINT NULL,
Winner TINYINT NULL,
FOREIGN KEY (Journal_ID) REFERENCES Journal(Journal_ID) ON DELETE CASCADE,
FOREIGN KEY (User_ID) REFERENCES Users(User_ID) ON DELETE CASCADE
) ENGINE=InnoDB;";
if (!$this->connection->query($BookRecordsTableQuery)) {
die("Failed to create bookrecords table: " . $this->connection->error);
}
}

Loading…
Cancel
Save