26 lines
892 B
SQL
26 lines
892 B
SQL
-- +goose Up
|
|
-- +goose StatementBegin
|
|
CREATE TABLE IF NOT EXISTS user_home_item_dismissals (
|
|
user_id INTEGER NOT NULL,
|
|
profile_id TEXT NOT NULL,
|
|
surface TEXT NOT NULL,
|
|
media_item_id TEXT NOT NULL,
|
|
series_id TEXT,
|
|
progress_updated_at TIMESTAMPTZ,
|
|
dismissed_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
PRIMARY KEY (user_id, profile_id, surface, media_item_id),
|
|
CONSTRAINT user_home_item_dismissals_user_id_fkey
|
|
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
|
|
CONSTRAINT user_home_item_dismissals_surface_check
|
|
CHECK (surface IN ('continue_watching', 'next_up'))
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_user_home_item_dismissals_lookup
|
|
ON user_home_item_dismissals(user_id, profile_id, surface);
|
|
-- +goose StatementEnd
|
|
|
|
-- +goose Down
|
|
-- +goose StatementBegin
|
|
DROP TABLE IF EXISTS user_home_item_dismissals;
|
|
-- +goose StatementEnd
|