Files
silo-server/migrations/sql/115_watch_provider_favorites.sql

66 lines
2.8 KiB
SQL

-- +goose Up
-- +goose StatementBegin
ALTER TABLE public.watch_provider_connections
ADD COLUMN import_favorites_enabled boolean NOT NULL DEFAULT false,
ADD COLUMN export_favorites_enabled boolean NOT NULL DEFAULT false,
ADD COLUMN sync_favorite_removals_enabled boolean NOT NULL DEFAULT false,
ADD COLUMN last_favorites_sync_at timestamptz;
ALTER TABLE public.watch_provider_sync_runs
ADD COLUMN inbound_favorites_found integer NOT NULL DEFAULT 0,
ADD COLUMN inbound_favorites_imported integer NOT NULL DEFAULT 0,
ADD COLUMN outbound_favorites_found integer NOT NULL DEFAULT 0,
ADD COLUMN outbound_favorites_sent integer NOT NULL DEFAULT 0,
ADD COLUMN favorite_removals_sent integer NOT NULL DEFAULT 0;
CREATE TABLE public.watch_provider_favorite_items (
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
connection_id uuid NOT NULL REFERENCES public.watch_provider_connections(id) ON DELETE CASCADE,
media_item_id text NOT NULL,
provider_item_key text NOT NULL,
kind text NOT NULL,
title text NOT NULL DEFAULT '',
year integer NOT NULL DEFAULT 0,
remote_present boolean NOT NULL DEFAULT false,
local_present boolean NOT NULL DEFAULT false,
last_seen_remote_at timestamptz,
last_seen_local_at timestamptz,
last_exported_at timestamptz,
last_removed_remote_at timestamptz,
last_removed_local_at timestamptz,
last_error text NOT NULL DEFAULT '',
created_at timestamptz NOT NULL DEFAULT now(),
updated_at timestamptz NOT NULL DEFAULT now(),
CONSTRAINT watch_provider_favorite_items_connection_media_key
UNIQUE (connection_id, media_item_id)
);
CREATE UNIQUE INDEX idx_watch_provider_favorite_items_provider_key
ON public.watch_provider_favorite_items (connection_id, provider_item_key)
WHERE provider_item_key <> '';
CREATE INDEX idx_watch_provider_favorite_items_connection_remote
ON public.watch_provider_favorite_items (connection_id, remote_present);
CREATE INDEX idx_watch_provider_favorite_items_connection_local
ON public.watch_provider_favorite_items (connection_id, local_present);
-- +goose StatementEnd
-- +goose Down
-- +goose StatementBegin
DROP TABLE IF EXISTS public.watch_provider_favorite_items;
ALTER TABLE public.watch_provider_sync_runs
DROP COLUMN IF EXISTS favorite_removals_sent,
DROP COLUMN IF EXISTS outbound_favorites_sent,
DROP COLUMN IF EXISTS outbound_favorites_found,
DROP COLUMN IF EXISTS inbound_favorites_imported,
DROP COLUMN IF EXISTS inbound_favorites_found;
ALTER TABLE public.watch_provider_connections
DROP COLUMN IF EXISTS last_favorites_sync_at,
DROP COLUMN IF EXISTS sync_favorite_removals_enabled,
DROP COLUMN IF EXISTS export_favorites_enabled,
DROP COLUMN IF EXISTS import_favorites_enabled;
-- +goose StatementEnd