<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
        xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
        xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.0.xsd
        http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd">
    <changeSet id="1" author="mclark">
        <sql dbms="mysql" endDelimiter=";;" splitStatements="true" stripComments="false">
            <![CDATA[
                CREATE TABLE `ROLLBACK-CDAM-3708-youtube_channel_REMOVED_special`
                SELECT
                    id,
                    youtube_channel_id,
                    youtube_channel_partner_status_history_id,
                    content_id_matching,
                    auto_claim,
                    monetization_status
                FROM youtube_channel
                WHERE youtube_channel_id IN (
                    'UC5EvOlOHEyTNte--xP0Zh_Q',
                    'UC6Q1--ylbhwlGF25u0lr-cQ',
                    'UCBR3o6XZrLvvq--zrl5EVjg',
                    'UCcuRHgRjVsnrVcH--H6cNaQ',
                    'UCvBv--uDgtdorj7gY6HIsbw',
                    'UCzMiDJ8jT6AAH--uRb3qcPg'
                )
                ;;

                CREATE TABLE `ROLLBACK-CDAM-3708-youtube_channel_CONNECTED_special`
                SELECT id, youtube_channel_id, youtube_channel_partner_status_history_id
                FROM youtube_channel
                WHERE youtube_channel_id IN (
                    'UC--0W9cZo-c8mWvg41I2cQg',
                    'UCkSMk4rAttWSePuK--ROmyg',
                    'UCTv1--GsldV37as9_k3RiXQ'
                )
                ;;

                INSERT INTO youtube_channel_partner_status_history (youtube_channel_partner_status_id, youtube_channel_id, status_signup_date, orchadmin_users_id, last_updated)
                SELECT 6 AS youtube_channel_partner_status_id, yc.id AS youtube_channel_id, CURDATE() as status_signup_date, 179 AS orchadmin_users_id, NOW() as last_updated
                FROM youtube_channel yc
                WHERE yc.youtube_channel_id IN (SELECT youtube_channel_id FROM `ROLLBACK-CDAM-3708-youtube_channel_REMOVED_special`)
                ;;

                WITH latest_status AS (
                    SELECT youtube_channel_id, MAX(id) as latest_status_id
                    FROM youtube_channel_partner_status_history
                    WHERE youtube_channel_id IN (SELECT id FROM `ROLLBACK-CDAM-3708-youtube_channel_REMOVED_special`)
                    GROUP BY youtube_channel_id
                )
                UPDATE youtube_channel yc
                INNER JOIN latest_status ON yc.id = latest_status.youtube_channel_id
                SET yc.youtube_channel_partner_status_history_id = latest_status.latest_status_id,
                    yc.content_id_matching = 0,
                    yc.auto_claim = 'no',
                    yc.monetization_status = 'not monetizing'
                ;;

                INSERT INTO youtube_channel_partner_status_history (youtube_channel_partner_status_id, youtube_channel_id, status_signup_date, orchadmin_users_id, last_updated)
                SELECT 1 AS youtube_channel_partner_status_id, yc.id AS youtube_channel_id, CURDATE() as status_signup_date, 179 AS orchadmin_users_id, NOW() as last_updated
                FROM youtube_channel yc
                WHERE yc.youtube_channel_id IN (SELECT youtube_channel_id FROM `ROLLBACK-CDAM-3708-youtube_channel_CONNECTED_special`)
                ;;

                WITH latest_status AS (
                    SELECT youtube_channel_id, MAX(id) as latest_status_id
                    FROM youtube_channel_partner_status_history
                    WHERE youtube_channel_id IN (SELECT id FROM `ROLLBACK-CDAM-3708-youtube_channel_CONNECTED_special`)
                    GROUP BY youtube_channel_id
                )
                UPDATE youtube_channel yc
                INNER JOIN latest_status ON yc.id = latest_status.youtube_channel_id
                SET yc.youtube_channel_partner_status_history_id = latest_status.latest_status_id
                ;;
            ]]>
        </sql>
        <rollback>
            <sql dbms="mysql" endDelimiter=";;" splitStatements="true" stripComments="false">
                <![CDATA[
                    UPDATE youtube_channel yc
                    INNER JOIN `ROLLBACK-CDAM-3708-youtube_channel_REMOVED_special` ycr
                    ON ycr.id = yc.id
                    SET yc.youtube_channel_partner_status_history_id = ycr.youtube_channel_partner_status_history_id,
                        yc.content_id_matching = ycr.content_id_matching,
                        yc.auto_claim = ycr.auto_claim,
                        yc.monetization_status = ycr.monetization_status
                    ;;

                    DELETE FROM youtube_channel_partner_status_history ycpsh
                    INNER JOIN `ROLLBACK-CDAM-3708-youtube_channel_REMOVED_special` ycr
                    ON ycpsh.youtube_channel_id = ycr.id
                    WHERE ycpsh.orchadmin_users_id = 179
                    ;;

                    UPDATE youtube_channel yc
                    INNER JOIN `ROLLBACK-CDAM-3708-youtube_channel_CONNECTED_special` ycr
                    ON ycr.id = yc.id
                    SET yc.youtube_channel_partner_status_history_id = ycr.youtube_channel_partner_status_history_id
                    ;;

                    DELETE FROM youtube_channel_partner_status_history ycpsh
                    INNER JOIN `ROLLBACK-CDAM-3708-youtube_channel_CONNECTED_special` ycr
                    ON ycpsh.youtube_channel_id = ycr.id
                    WHERE ycpsh.orchadmin_users_id = 179
                    ;;

                    DROP TABLE `ROLLBACK-CDAM-3708-youtube_channel_REMOVED_special`;;
                    DROP TABLE `ROLLBACK-CDAM-3708-youtube_channel_CONNECTED_special`;;
                ]]>
            </sql>
        </rollback>
    </changeSet>
</databaseChangeLog>
