-- I was planning on migrating strapi database to postgrest and also migrating from INT to UUID.
-- Doing both at once proved far too complex, so I'm reverting the schmea to use INT ids in order to migrate.
-- Once that is done we can switch to uuids, but the two steps should be separate

DO $$
BEGIN
    -- api.builds
    ALTER TABLE api.builds DROP COLUMN id CASCADE;
    ALTER TABLE api.builds ADD COLUMN id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY;
    ALTER TABLE api.builds DROP COLUMN vod_id CASCADE;
    ALTER TABLE api.builds ADD COLUMN vod_id INT;

    -- api.contributors
    ALTER TABLE api.contributors DROP COLUMN id CASCADE;
    ALTER TABLE api.contributors ADD COLUMN id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY;

    -- api.discord_interactions
    ALTER TABLE api.discord_interactions DROP COLUMN id CASCADE;
    ALTER TABLE api.discord_interactions ADD COLUMN id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY;

    -- api.mux_assets
    ALTER TABLE api.mux_assets DROP COLUMN id CASCADE;
    ALTER TABLE api.mux_assets ADD COLUMN id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY;

    -- api.patrons
    ALTER TABLE api.patrons DROP COLUMN id CASCADE;
    ALTER TABLE api.patrons ADD COLUMN id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY;

    -- api.recordings
    ALTER TABLE api.recordings DROP COLUMN id CASCADE;
    ALTER TABLE api.recordings ADD COLUMN id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY;
    ALTER TABLE api.recordings DROP COLUMN discord_interaction_id CASCADE;
    ALTER TABLE api.recordings ADD COLUMN discord_interaction_id INT;

    -- api.s3_files
    ALTER TABLE api.s3_files DROP COLUMN id CASCADE;
    ALTER TABLE api.s3_files ADD COLUMN id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY;

    -- api.segments
    ALTER TABLE api.segments DROP COLUMN id CASCADE;
    ALTER TABLE api.segments ADD COLUMN id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY;
    ALTER TABLE api.segments DROP COLUMN vod_id CASCADE;
    ALTER TABLE api.segments ADD COLUMN vod_id INT;

    -- api.segments_vod_links
    ALTER TABLE api.segments_vod_links DROP COLUMN id CASCADE;
    ALTER TABLE api.segments_vod_links ADD COLUMN id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY;
    ALTER TABLE api.segments_vod_links DROP COLUMN segment_id CASCADE;
    ALTER TABLE api.segments_vod_links ADD COLUMN segment_id INT;
    ALTER TABLE api.segments_vod_links DROP COLUMN vod_id CASCADE;
    ALTER TABLE api.segments_vod_links ADD COLUMN vod_id INT;

    -- api.streams
    ALTER TABLE api.streams DROP COLUMN id CASCADE;
    ALTER TABLE api.streams ADD COLUMN id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY;
    ALTER TABLE api.streams DROP COLUMN vtuber CASCADE;
    ALTER TABLE api.streams ADD COLUMN vtuber INT;

    -- api.tags
    ALTER TABLE api.tags DROP COLUMN id CASCADE;
    ALTER TABLE api.tags ADD COLUMN id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY;
    ALTER TABLE api.tags DROP COLUMN toy_id CASCADE;
    ALTER TABLE api.tags ADD COLUMN toy_id INT;

    -- api.tags_vods
    ALTER TABLE api.tags_vods DROP COLUMN id CASCADE;
    ALTER TABLE api.tags_vods ADD COLUMN id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY;
    ALTER TABLE api.tags_vods DROP COLUMN tag_id CASCADE;
    ALTER TABLE api.tags_vods ADD COLUMN tag_id INT;
    ALTER TABLE api.tags_vods DROP COLUMN vod_id CASCADE;
    ALTER TABLE api.tags_vods ADD COLUMN vod_id INT;

    -- api.toys
    ALTER TABLE api.toys DROP COLUMN id CASCADE;
    ALTER TABLE api.toys ADD COLUMN id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY;
    ALTER TABLE api.toys DROP COLUMN created_by_id CASCADE;
    ALTER TABLE api.toys ADD COLUMN created_by_id INT;
    ALTER TABLE api.toys DROP COLUMN updated_by_id CASCADE;
    ALTER TABLE api.toys ADD COLUMN updated_by_id INT;

    -- api.toys_tags
    ALTER TABLE api.toys_tags DROP COLUMN id CASCADE;
    ALTER TABLE api.toys_tags ADD COLUMN id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY;
    ALTER TABLE api.toys_tags DROP COLUMN tag_id CASCADE;
    ALTER TABLE api.toys_tags ADD COLUMN tag_id INT;
    ALTER TABLE api.toys_tags DROP COLUMN toy_id CASCADE;
    ALTER TABLE api.toys_tags ADD COLUMN toy_id INT;

    -- api.toys_vtubers
    ALTER TABLE api.toys_vtubers DROP COLUMN id CASCADE;
    ALTER TABLE api.toys_vtubers ADD COLUMN id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY;
    ALTER TABLE api.toys_vtubers DROP COLUMN toy_id CASCADE;
    ALTER TABLE api.toys_vtubers ADD COLUMN toy_id INT;
    ALTER TABLE api.toys_vtubers DROP COLUMN vtuber_id CASCADE;
    ALTER TABLE api.toys_vtubers ADD COLUMN vtuber_id INT;

    -- api.vods
    ALTER TABLE api.vods DROP COLUMN id CASCADE;
    ALTER TABLE api.vods ADD COLUMN id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY;
    ALTER TABLE api.vods DROP COLUMN mux_asset CASCADE;
    ALTER TABLE api.vods ADD COLUMN mux_asset INT;
    ALTER TABLE api.vods DROP COLUMN recording_id CASCADE;
    ALTER TABLE api.vods ADD COLUMN recording_id INT;
    ALTER TABLE api.vods DROP COLUMN s3_file CASCADE;
    ALTER TABLE api.vods ADD COLUMN s3_file INT;
    ALTER TABLE api.vods DROP COLUMN stream_id CASCADE;
    ALTER TABLE api.vods ADD COLUMN stream_id INT;
    ALTER TABLE api.vods DROP COLUMN thumbnail CASCADE;
    ALTER TABLE api.vods ADD COLUMN thumbnail INT;
    ALTER TABLE api.vods DROP COLUMN vtuber CASCADE;
    ALTER TABLE api.vods ADD COLUMN vtuber INT;

    -- api.vods_s3_files_joins
    ALTER TABLE api.vods_s3_files_joins DROP COLUMN id CASCADE;
    ALTER TABLE api.vods_s3_files_joins ADD COLUMN id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY;
    ALTER TABLE api.vods_s3_files_joins DROP COLUMN s3_file_id CASCADE;
    ALTER TABLE api.vods_s3_files_joins ADD COLUMN s3_file_id INT;
    ALTER TABLE api.vods_s3_files_joins DROP COLUMN vod_id CASCADE;
    ALTER TABLE api.vods_s3_files_joins ADD COLUMN vod_id INT;

    -- api.vtubers
    ALTER TABLE api.vtubers DROP COLUMN id CASCADE;
    ALTER TABLE api.vtubers ADD COLUMN id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY;

END $$;
