| |
|
|
| |
| 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); |