<?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="jian">
        <sql dbms="mysql" endDelimiter=";;" splitStatements="true" stripComments="true">
        <![CDATA[
            USE direct_delivery;;

            DROP PROCEDURE IF EXISTS sp_check_for_reproc;;

            CREATE DEFINER=theorchard_dd@127.0.0.1 PROCEDURE sp_check_for_reproc(IN eqd_id BIGINT)
            BEGIN
                SELECT eq.encoding_order_type, eqd.upc, eqd.cd, eqd.track_id, eqd.clip_number, eqd.dms_master_master_id 
                    INTO @encoding_order_type, @upc, @cd, @track_id, @clip_number, @dms_master_master_id
                FROM encoding_queue eq
                INNER JOIN encoding_queue_detail eqd ON eq.encoding_queue_id = eqd.encoding_queue_id
                WHERE eqd.encoding_queue_detail_id = eqd_id;
                
                SELECT COUNT(*) AS no_reproc
                FROM encoding_queue_detail eqd 
                INNER JOIN encoding_queue eq ON eqd.encoding_queue_id = eq.encoding_queue_id
                WHERE eqd.upc = @upc
                    AND CASE WHEN @cd IS NULL THEN eqd.cd IS NULL
                        ELSE eqd.cd = @cd END
                    AND CASE WHEN @track_id IS NULL THEN eqd.track_id IS NULL
                        ELSE eqd.track_id = @track_id END
                    AND CASE WHEN @clip_number IS NULL THEN eqd.clip_number IS NULL
                        ELSE eqd.clip_number = @clip_number END
                    AND eqd.dms_master_master_id = @dms_master_master_id
                    AND eqd.status NOT IN ('cancelled', 'system_cancelled')
                    AND eqd.encoding_queue_detail_id > eqd_id
                    AND eq.meta_update = 'N'
                    AND eq.encoding_order_type = @encoding_order_type;
            END;;
        ]]>
        </sql>
        <rollback>
            <sql dbms="mysql" endDelimiter=";;" splitStatements="true" stripComments="true">
            <![CDATA[
                USE direct_delivery;;

                DROP PROCEDURE IF EXISTS sp_check_for_reproc;;

                CREATE DEFINER=theorchard_dd@127.0.0.1 PROCEDURE sp_check_for_reproc(IN eqd_id BIGINT)
                BEGIN
                    SELECT upc, cd, track_id, clip_number, dms_master_master_id 
                        INTO @upc, @cd, @track_id, @clip_number, @dms_master_master_id
                    FROM encoding_queue_detail
                    WHERE encoding_queue_detail_id = eqd_id;
                 
                    SELECT COUNT(*) AS no_reproc
                    FROM encoding_queue_detail eqd
                    INNER JOIN encoding_queue eq ON eqd.encoding_queue_id = eq.encoding_queue_id
                    WHERE eqd.upc = @upc
                        AND CASE WHEN @cd IS NULL THEN eqd.cd IS NULL
                            ELSE eqd.cd = @cd END
                        AND CASE WHEN @track_id IS NULL THEN eqd.track_id IS NULL
                            ELSE eqd.track_id = @track_id END
                        AND CASE WHEN @clip_number IS NULL THEN eqd.clip_number IS NULL
                            ELSE eqd.clip_number = @clip_number END
                        AND eqd.dms_master_master_id = @dms_master_master_id
                        AND eqd.status NOT IN ('cancelled', 'system_cancelled')
                        AND eqd.encoding_queue_detail_id > eqd_id
                        AND eq.meta_update = 'N';
                END;;
            ]]>
            </sql>
        </rollback>
    </changeSet>
</databaseChangeLog>