setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $db->exec('PRAGMA foreign_keys = ON;'); $db->exec(" CREATE TABLE IF NOT EXISTS users ( email TEXT PRIMARY KEY, vorname TEXT NOT NULL, nachname TEXT NOT NULL, password TEXT NOT NULL ); "); $db->exec(" CREATE TABLE IF NOT EXISTS articles ( id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, content TEXT, author TEXT, category TEXT, tags TEXT, created TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (author) REFERENCES users(email) ON DELETE SET NULL ON UPDATE CASCADE ); "); $db->exec(" CREATE TABLE IF NOT EXISTS likes ( article_id INTEGER, user_id TEXT, PRIMARY KEY (article_id, user_id), FOREIGN KEY (article_id) REFERENCES articles(id) ON DELETE CASCADE, FOREIGN KEY (user_id) REFERENCES users(email) ON DELETE CASCADE ); "); $db->exec(" CREATE TABLE IF NOT EXISTS comments ( id INTEGER PRIMARY KEY AUTOINCREMENT, article_id INTEGER NOT NULL, parent_comment_id INTEGER NULL, author TEXT NOT NULL, content TEXT NOT NULL, created TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (article_id) REFERENCES articles(id) ON DELETE CASCADE, FOREIGN KEY (author) REFERENCES users(email) ON DELETE CASCADE, FOREIGN KEY (parent_comment_id) REFERENCES comments(id) ON DELETE CASCADE ); "); } catch (PDOException $e) { throw new RuntimeException("internal-error"); } } } }