| | |
| |
|
| | |
| | CREATE TABLE topics ( |
| | id SERIAL PRIMARY KEY, |
| | name VARCHAR(50) NOT NULL UNIQUE, |
| | description TEXT, |
| | created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP |
| | ); |
| |
|
| | |
| | CREATE TABLE words ( |
| | id SERIAL PRIMARY KEY, |
| | word VARCHAR(20) NOT NULL, |
| | length INTEGER NOT NULL, |
| | difficulty_level INTEGER DEFAULT 1 CHECK (difficulty_level BETWEEN 1 AND 3), |
| | topic_id INTEGER REFERENCES topics(id) ON DELETE CASCADE, |
| | created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, |
| | INDEX idx_topic_length (topic_id, length), |
| | INDEX idx_difficulty (difficulty_level) |
| | ); |
| |
|
| | |
| | CREATE TABLE clues ( |
| | id SERIAL PRIMARY KEY, |
| | word_id INTEGER REFERENCES words(id) ON DELETE CASCADE, |
| | clue_text TEXT NOT NULL, |
| | difficulty INTEGER DEFAULT 1 CHECK (difficulty BETWEEN 1 AND 3), |
| | created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP |
| | ); |
| |
|
| | |
| | CREATE TABLE generated_puzzles ( |
| | id SERIAL PRIMARY KEY, |
| | grid_data JSONB NOT NULL, |
| | clues_data JSONB NOT NULL, |
| | topics TEXT[] NOT NULL, |
| | difficulty INTEGER DEFAULT 1, |
| | created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, |
| | expires_at TIMESTAMP DEFAULT (CURRENT_TIMESTAMP + INTERVAL '24 hours') |
| | ); |
| |
|
| | |
| | INSERT INTO topics (name, description) VALUES |
| | ('Animals', 'Creatures from the animal kingdom'), |
| | ('Science', 'Scientific terms and concepts'), |
| | ('Geography', 'Places, landforms, and geographical features'), |
| | ('Technology', 'Computing and technology terms'), |
| | ('History', 'Historical events, people, and periods'), |
| | ('Sports', 'Sports, games, and athletic activities'); |
| |
|
| | |
| | INSERT INTO words (word, length, difficulty_level, topic_id) VALUES |
| | ('DOG', 3, 1, 1), |
| | ('CAT', 3, 1, 1), |
| | ('ELEPHANT', 8, 2, 1), |
| | ('TIGER', 5, 1, 1), |
| | ('WHALE', 5, 2, 1), |
| | ('BUTTERFLY', 9, 3, 1), |
| | ('PENGUIN', 7, 2, 1), |
| | ('GIRAFFE', 7, 2, 1); |
| |
|
| | |
| | INSERT INTO clues (word_id, clue_text, difficulty) VALUES |
| | (1, 'Man''s best friend', 1), |
| | (2, 'Feline pet that purrs', 1), |
| | (3, 'Largest land mammal', 2), |
| | (4, 'Striped big cat', 1), |
| | (5, 'Largest marine mammal', 2), |
| | (6, 'Colorful insect with wings', 3), |
| | (7, 'Black and white Antarctic bird', 2), |
| | (8, 'Tallest animal in the world', 2); |