20 lines
827 B
MySQL
20 lines
827 B
MySQL
|
|
-- Shared family wishlist: recipes someone wants to cook next.
|
||
|
|
-- Each recipe appears at most once; anyone can add/remove and like/unlike.
|
||
|
|
|
||
|
|
CREATE TABLE IF NOT EXISTS wishlist (
|
||
|
|
recipe_id INTEGER PRIMARY KEY REFERENCES recipe(id) ON DELETE CASCADE,
|
||
|
|
added_by_profile_id INTEGER REFERENCES profile(id) ON DELETE SET NULL,
|
||
|
|
added_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
||
|
|
);
|
||
|
|
|
||
|
|
CREATE INDEX IF NOT EXISTS ix_wishlist_added_at ON wishlist(added_at DESC);
|
||
|
|
|
||
|
|
CREATE TABLE IF NOT EXISTS wishlist_like (
|
||
|
|
recipe_id INTEGER NOT NULL REFERENCES recipe(id) ON DELETE CASCADE,
|
||
|
|
profile_id INTEGER NOT NULL REFERENCES profile(id) ON DELETE CASCADE,
|
||
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
PRIMARY KEY (recipe_id, profile_id)
|
||
|
|
);
|
||
|
|
|
||
|
|
CREATE INDEX IF NOT EXISTS ix_wishlist_like_recipe ON wishlist_like(recipe_id);
|