<?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="mdrake">
        <sql dbms="mysql" endDelimiter=";;" splitStatements="true" stripComments="true">
        USE art_relations;;

        DROP TRIGGER IF EXISTS `after_update_track`;;
        DROP TRIGGER IF EXISTS `after_insert_track`;;
        DROP TRIGGER IF EXISTS `after_delete_track`;;

        CREATE DEFINER = 'theorchard'@'10.10.%' TRIGGER after_update_track AFTER UPDATE ON track
        FOR EACH ROW
            BEGIN

            IF (
                NEW.track_name != OLD.track_name
                OR (ISNULL(NEW.track_name) AND NOT ISNULL(OLD.track_name))
                OR (not ISNULL(NEW.track_name) AND ISNULL(OLD.track_name))
            )
            OR (
                NEW.isrc != OLD.isrc
                OR (ISNULL(NEW.isrc) AND NOT ISNULL(OLD.isrc))
                OR (NOT ISNULL(NEW.isrc) AND ISNULL(OLD.isrc))
            )
            THEN
                CALL cloudsearch.sp_upsert_release(NEW.release_id);
            END IF;

            INSERT INTO `art_relations_log`.`track_log` SET
                `log_timestamp` = now(),
                `log_action` = 'update',
                `track_name` = NEW.`track_name`,
                `upc` = NEW.`upc`,
                `cd` = NEW.`cd`,
                `track_id` = NEW.`track_id`,
                `orchdmclip` = NEW.`orchdmclip`,
                `sample` = NEW.`sample`,
                `dmclips` = NEW.`dmclips`,
                `isrc` = NEW.`isrc`,
                `id` = NEW.`id`,
                `length_minute` = NEW.`length_minute`,
                `length_seconds` = NEW.`length_seconds`,
                `writer` = NEW.`writer`,
                `credit` = NEW.`credit`,
                `mechanical` = NEW.`mechanical`,
                `publisher` = NEW.`publisher`,
                `publish_company` = NEW.`publish_company`,
                `dpd_license` = NEW.`dpd_license`,
                `explicit_lyrics` = NEW.`explicit_lyrics`,
                `version` = NEW.`version`,
                `purchasable` = NEW.`purchasable`,
                `download_price` = NEW.`download_price`,
                `p_line` = NEW.`p_line`,
                `hidden` = NEW.`hidden`,
                `offer_type` = NEW.`offer_type`,
                `dig_distribution_type` = NEW.`dig_distribution_type`,
                `third_party_publisher` = NEW.`third_party_publisher`,
                `royalty_collection` = NEW.`royalty_collection`,
                `publishing_admin` = NEW.`publishing_admin`,
                `sync_admin` = NEW.`sync_admin`,
                `additional_id` = NEW.`additional_id`,
                `track_type` = NEW.`track_type`,
                `mp3_url` = NEW.`mp3_url`,
                `stereo_or_mono` = NEW.`stereo_or_mono`,
                `bonus` = NEW.`bonus`,
                `recommended` = NEW.`recommended`,
                `youtube_matches` = NEW.`youtube_matches`,
                `youtube_uploads` = NEW.`youtube_uploads`,
                `preorder_only` = NEW.`preorder_only`,
                `original_file_name` = NEW.`original_file_name`,
                `release_id` = NEW.`release_id`,
                `last_updated` = NEW.`last_updated`,
                `meta_language` = NEW.`meta_language`,
                `preview_start_time` = NEW.`preview_start_time`,
                `closed_caption_exists` = NEW.`closed_caption_exists`,
                `closed_caption_reason_id` = NEW.`closed_caption_reason_id`,
                `vendor_track_identifier` = NEW.`vendor_track_identifier`,
                `recording_country` = NEW.`recording_country`,
                `recording_year` = NEW.`recording_year`
                ;

        END;;

        CREATE DEFINER = 'theorchard'@'10.10.%' TRIGGER after_insert_track AFTER INSERT ON track

        FOR EACH ROW
            BEGIN

            CALL cloudsearch.sp_upsert_release(NEW.release_id);

            INSERT INTO `art_relations_log`.`track_log` SET
                `log_timestamp` = now(),
                `log_action` = 'insert',
                `track_name` = NEW.`track_name`,
                `upc` = NEW.`upc`,
                `cd` = NEW.`cd`,
                `track_id` = NEW.`track_id`,
                `orchdmclip` = NEW.`orchdmclip`,
                `sample` = NEW.`sample`,
                `dmclips` = NEW.`dmclips`,
                `isrc` = NEW.`isrc`,
                `id` = NEW.`id`,
                `length_minute` = NEW.`length_minute`,
                `length_seconds` = NEW.`length_seconds`,
                `writer` = NEW.`writer`,
                `credit` = NEW.`credit`,
                `mechanical` = NEW.`mechanical`,
                `publisher` = NEW.`publisher`,
                `publish_company` = NEW.`publish_company`,
                `dpd_license` = NEW.`dpd_license`,
                `explicit_lyrics` = NEW.`explicit_lyrics`,
                `version` = NEW.`version`,
                `purchasable` = NEW.`purchasable`,
                `download_price` = NEW.`download_price`,
                `p_line` = NEW.`p_line`,
                `hidden` = NEW.`hidden`,
                `offer_type` = NEW.`offer_type`,
                `dig_distribution_type` = NEW.`dig_distribution_type`,
                `third_party_publisher` = NEW.`third_party_publisher`,
                `royalty_collection` = NEW.`royalty_collection`,
                `publishing_admin` = NEW.`publishing_admin`,
                `sync_admin` = NEW.`sync_admin`,
                `additional_id` = NEW.`additional_id`,
                `track_type` = NEW.`track_type`,
                `mp3_url` = NEW.`mp3_url`,
                `stereo_or_mono` = NEW.`stereo_or_mono`,
                `bonus` = NEW.`bonus`,
                `recommended` = NEW.`recommended`,
                `youtube_matches` = NEW.`youtube_matches`,
                `youtube_uploads` = NEW.`youtube_uploads`,
                `preorder_only` = NEW.`preorder_only`,
                `original_file_name` = NEW.`original_file_name`,
                `release_id` = NEW.`release_id`,
                `last_updated` = NEW.`last_updated`,
                `meta_language` = NEW.`meta_language`,
                `preview_start_time` = NEW.`preview_start_time`,
                `closed_caption_exists` = NEW.`closed_caption_exists`,
                `closed_caption_reason_id` = NEW.`closed_caption_reason_id`,
                `vendor_track_identifier` = NEW.`vendor_track_identifier`,
                `recording_country` = NEW.`recording_country`,
                `recording_year` = NEW.`recording_year`
                ;

        END;;

        CREATE DEFINER = 'theorchard'@'10.10.%' TRIGGER after_delete_track AFTER DELETE ON track
        FOR EACH ROW
            BEGIN

            INSERT INTO `art_relations_log`.`track_log` SET
                `log_timestamp` = now(),
                `log_action` = 'delete',
                `track_name` = OLD.`track_name`,
                `upc` = OLD.`upc`,
                `cd` = OLD.`cd`,
                `track_id` = OLD.`track_id`,
                `orchdmclip` = OLD.`orchdmclip`,
                `sample` = OLD.`sample`,
                `dmclips` = OLD.`dmclips`,
                `isrc` = OLD.`isrc`,
                `id` = OLD.`id`,
                `length_minute` = OLD.`length_minute`,
                `length_seconds` = OLD.`length_seconds`,
                `writer` = OLD.`writer`,
                `credit` = OLD.`credit`,
                `mechanical` = OLD.`mechanical`,
                `publisher` = OLD.`publisher`,
                `publish_company` = OLD.`publish_company`,
                `dpd_license` = OLD.`dpd_license`,
                `explicit_lyrics` = OLD.`explicit_lyrics`,
                `version` = OLD.`version`,
                `purchasable` = OLD.`purchasable`,
                `download_price` = OLD.`download_price`,
                `p_line` = OLD.`p_line`,
                `hidden` = OLD.`hidden`,
                `offer_type` = OLD.`offer_type`,
                `dig_distribution_type` = OLD.`dig_distribution_type`,
                `third_party_publisher` = OLD.`third_party_publisher`,
                `royalty_collection` = OLD.`royalty_collection`,
                `publishing_admin` = OLD.`publishing_admin`,
                `sync_admin` = OLD.`sync_admin`,
                `additional_id` = OLD.`additional_id`,
                `track_type` = OLD.`track_type`,
                `mp3_url` = OLD.`mp3_url`,
                `stereo_or_mono` = OLD.`stereo_or_mono`,
                `bonus` = OLD.`bonus`,
                `recommended` = OLD.`recommended`,
                `youtube_matches` = OLD.`youtube_matches`,
                `youtube_uploads` = OLD.`youtube_uploads`,
                `preorder_only` = OLD.`preorder_only`,
                `original_file_name` = OLD.`original_file_name`,
                `release_id` = OLD.`release_id`,
                `last_updated` = OLD.`last_updated`,
                `meta_language` = OLD.`meta_language`,
                `preview_start_time` = OLD.`preview_start_time`,
                `closed_caption_exists` = OLD.`closed_caption_exists`,
                `closed_caption_reason_id` = OLD.`closed_caption_reason_id`,
                `vendor_track_identifier` = OLD.`vendor_track_identifier`,
                `recording_country` = OLD.`recording_country`,
                `recording_year` = OLD.`recording_year`
                ;

        END;;

        </sql>
        <rollback>
            <sql dbms="mysql" endDelimiter=";;" splitStatements="true" stripComments="true">

            USE art_relations;;

            DROP TRIGGER IF EXISTS `after_update_track`;;
            DROP TRIGGER IF EXISTS `after_insert_track`;;
            DROP TRIGGER IF EXISTS `after_delete_track`;;

            CREATE DEFINER = 'theorchard'@'10.10.%' TRIGGER after_update_track AFTER UPDATE ON track
            FOR EACH ROW
                BEGIN
                IF (
                    NEW.track_name != OLD.track_name
                    OR (ISNULL(NEW.track_name) AND NOT ISNULL(OLD.track_name))
                    OR (not ISNULL(NEW.track_name) AND ISNULL(OLD.track_name))
                )
                OR (
                    NEW.isrc != OLD.isrc
                    OR (ISNULL(NEW.isrc) AND NOT ISNULL(OLD.isrc))
                    OR (NOT ISNULL(NEW.isrc) AND ISNULL(OLD.isrc))
                )
                THEN
                    CALL cloudsearch.sp_upsert_release(NEW.release_id);
                END IF;
            END;;

            CREATE DEFINER = 'theorchard'@'10.10.%' TRIGGER after_insert_track AFTER INSERT ON track
            FOR EACH ROW
            BEGIN
                CALL cloudsearch.sp_upsert_release(NEW.release_id);
            END;;


            </sql>
        </rollback>
    </changeSet>
</databaseChangeLog>