<?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="mdadhania">
        <sql dbms="mysql" endDelimiter=";;" splitStatements="true" stripComments="true">
            <![CDATA[
                DROP TABLE IF EXISTS `ROLLBACK-DIS-3292-release_artist_missing_11991`;;
                DROP TABLE IF EXISTS `ROLLBACK-DIS-3292-track_artist_missing_11991`;;

                CREATE TABLE `ROLLBACK-DIS-3292-release_artist_missing_11991`
                SELECT r.upc, r.release_id
                FROM releases r 
                INNER JOIN artist_info ai ON ai.artist_id = r.artist_id
                LEFT JOIN release_artist ra ON ra.release_id = r.release_id AND ra.role = 'producer' AND ra.artist_name = 'Hasan Saltık'
                WHERE ai.vendor_id = 11991 AND r.product_type_id = 1 AND r.distribution_format_id = 1 AND ra.release_artist_id IS NULL;;

                CREATE TABLE `ROLLBACK-DIS-3292-track_artist_missing_11991`
                SELECT r.upc, r.release_id, t.id AS track_id
                FROM releases r 
                INNER JOIN artist_info ai ON ai.artist_id = r.artist_id
                INNER JOIN track t ON t.release_id = r.release_id
                LEFT JOIN track_artist ta ON ta.track_id = t.id AND ta.type = 'producer' AND ta.name = 'Hasan Saltık'
                WHERE ai.vendor_id = 11991 AND r.product_type_id = 1 AND r.distribution_format_id = 1 AND ta.id IS NULL;;

                INSERT INTO release_artist (upc, role, release_id, artist_name)
                SELECT upc, 'producer', release_id, 'Hasan Saltık'
                FROM `ROLLBACK-DIS-3292-release_artist_missing_11991`;;

                INSERT INTO track_artist (track_id, type, name)
                SELECT track_id, 'producer', 'Hasan Saltık'
                FROM `ROLLBACK-DIS-3292-track_artist_missing_11991`;;
            ]]>
        </sql>
        <rollback>
            <sql dbms="mysql" endDelimiter=";;" splitStatements="true" stripComments="true">
                <![CDATA[
                    DELETE ta.* 
                    FROM track_artist ta
                    INNER JOIN `ROLLBACK-DIS-3292-track_artist_missing_11991` rb ON rb.track_id = ta.track_id
                    WHERE ta.type = 'producer' AND ta.name = 'Hasan Saltık';;

                    DELETE ra.* 
                    FROM release_artist ra
                    INNER JOIN `ROLLBACK-DIS-3292-release_artist_missing_11991` rb ON rb.upc = ra.upc AND rb.release_id = ra.release_id
                    WHERE ra.role = 'producer' AND ra.artist_name = 'Hasan Saltık';;

                    DROP TABLE `ROLLBACK-DIS-3292-track_artist_missing_11991`;;
                    DROP TABLE `ROLLBACK-DIS-3292-release_artist_missing_11991`;;
                ]]>
            </sql>
        </rollback>
    </changeSet>
</databaseChangeLog>
