CREATE TABLE IF NOT EXISTS users ( id TEXT PRIMARY KEY, username TEXT UNIQUE, password_hash TEXT, display_name TEXT, bio TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE IF NOT EXISTS tweets ( id TEXT PRIMARY KEY, user_id TEXT, content TEXT, quote_tweet_id TEXT, reply_to_id TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users(id), FOREIGN KEY (quote_tweet_id) REFERENCES tweets(id), FOREIGN KEY (reply_to_id) REFERENCES tweets(id) ); CREATE TABLE IF NOT EXISTS follows ( follower_id TEXT, followed_id TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (follower_id, followed_id), FOREIGN KEY (follower_id) REFERENCES users(id), FOREIGN KEY (followed_id) REFERENCES users(id) ); CREATE TABLE IF NOT EXISTS likes ( user_id TEXT, tweet_id TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (user_id, tweet_id), FOREIGN KEY (user_id) REFERENCES users(id), FOREIGN KEY (tweet_id) REFERENCES tweets(id) ); CREATE TABLE IF NOT EXISTS bookmarks ( user_id TEXT, tweet_id TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (user_id, tweet_id), FOREIGN KEY (user_id) REFERENCES users(id), FOREIGN KEY (tweet_id) REFERENCES tweets(id) ); CREATE TABLE IF NOT EXISTS retweets ( user_id TEXT, tweet_id TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (user_id, tweet_id), FOREIGN KEY (user_id) REFERENCES users(id), FOREIGN KEY (tweet_id) REFERENCES tweets(id) ); CREATE TABLE IF NOT EXISTS messages ( id TEXT PRIMARY KEY, sender_id TEXT, receiver_id TEXT, content TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (sender_id) REFERENCES users(id), FOREIGN KEY (receiver_id) REFERENCES users(id) );