-- Create recipes table CREATE TABLE recipes ( id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT NOT NULL, description TEXT, ingredients TEXT NOT NULL, -- JSON array instructions TEXT NOT NULL, -- JSON array of steps source_url TEXT, notes TEXT, servings INTEGER, prep_time_minutes INTEGER, cook_time_minutes INTEGER, created_at INTEGER NOT NULL, updated_at INTEGER NOT NULL, last_cooked_at INTEGER ); -- Create tags table CREATE TABLE tags ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT UNIQUE NOT NULL, color TEXT -- Hex color for UI ); -- Create recipe_tags join table CREATE TABLE recipe_tags ( recipe_id INTEGER NOT NULL, tag_id INTEGER NOT NULL, PRIMARY KEY (recipe_id, tag_id), FOREIGN KEY (recipe_id) REFERENCES recipes(id) ON DELETE CASCADE, FOREIGN KEY (tag_id) REFERENCES tags(id) ON DELETE CASCADE ); -- Indexes for efficiency CREATE INDEX idx_recipes_title ON recipes(title); CREATE INDEX idx_recipes_created_at ON recipes(created_at DESC); CREATE INDEX idx_recipe_tags_recipe ON recipe_tags(recipe_id); CREATE INDEX idx_recipe_tags_tag ON recipe_tags(tag_id);