"""
alter fancards table
"""

from yoyo import step

__depends__ = {'20240128_00_ANI72-add-resuming_at-to-jobs'}

steps = [
    step("""
CREATE TEMPORARY TABLE temp_unique_fancards AS
SELECT DISTINCT ON (user_id, file_id)
    id,
    user_id,
    file_id
FROM fanbox_fancards
ORDER BY user_id, file_id, id DESC;


TRUNCATE TABLE fanbox_fancards;

INSERT INTO fanbox_fancards (id, user_id, file_id)
SELECT id, user_id, file_id
FROM temp_unique_fancards;

DROP TABLE temp_unique_fancards;
"""),
    step("""
ALTER TABLE public.fanbox_fancards ADD COLUMN last_checked_at timestamp DEFAULT CURRENT_TIMESTAMP;
"""),
    step("""
ALTER TABLE public.fanbox_fancards ADD COLUMN price text NOT NULL DEFAULT '' ;
"""),
    step("""
ALTER TABLE public.fanbox_fancards ALTER COLUMN file_id DROP NOT NULL;
"""),
    step("""
ALTER TABLE fanbox_fancards DROP CONSTRAINT IF EXISTS fanbox_fancards_user_id_file_id_key;
ALTER TABLE fanbox_fancards ADD CONSTRAINT fanbox_fancards_user_id_file_id_price_unique_idx UNIQUE (user_id, file_id, price);
CREATE UNIQUE INDEX fanbox_fancards_null_file_id_user_id_price_unique_idx ON fanbox_fancards (user_id, price) WHERE file_id IS NULL;

    """),
    step("""
UPDATE public.fanbox_fancards
SET last_checked_at = f.added
FROM public.files f
WHERE fanbox_fancards.file_id = f.id;
"""),
]
