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

            SET @resource_name = 'legal';;
            SET @privilege_name = 'privacy';;
            SET @vendor_resource_id = (
              SELECT `id` FROM `vendor_resource` WHERE `resource` = @resource_name LIMIT 1
            );;

            -- Create the privilege(s)
            INSERT INTO `vendor_privilege` (`privilege`)
            SELECT * FROM (SELECT @privilege_name) AS tmp
            WHERE NOT EXISTS (
              SELECT `id` FROM `vendor_privilege` WHERE `privilege` = @privilege_name
            ) LIMIT 1;;
            SET @vendor_privilege_id = (
              SELECT `id` FROM `vendor_privilege` WHERE `privilege` = @privilege_name LIMIT 1
            );;

            -- Create the permissions
            INSERT INTO `vendor_permissions` (`resource_id`,`privilege_id`)
            VALUES (@vendor_resource_id, @vendor_privilege_id);;
            SET @vendor_permission_id = LAST_INSERT_ID();;

            -- Assign the permissions
            INSERT INTO vendor_role_permissions (role_id, permission_id, allow) (SELECT id, @vendor_permission_id, 'Y' FROM vendor_roles);;

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

                USE art_relations;;

                SET @vendor_resource_id = (SELECT id FROM vendor_resource WHERE resource = 'legal');;
                SET @vendor_privilege_id = (SELECT id FROM vendor_privilege WHERE privilege = 'privacy' ORDER BY id DESC LIMIT 1);;
                SET @vendor_permission_id = (SELECT id FROM vendor_permissions WHERE resource_id = @vendor_resource_id AND privilege_id = @vendor_privilege_id);;

                DELETE FROM vendor_role_permissions WHERE vendor_role_permissions.`permission_id` = @vendor_permission_id;;
                DELETE FROM vendor_permissions WHERE vendor_permissions.`id` = @vendor_permission_id;;
                DELETE FROM vendor_privilege WHERE vendor_privilege .`id` = @vendor_privilege_id;;

            </sql>
        </rollback>
    </changeSet>
    <changeSet id="2" author="schaudhari">
        <sql dbms="mysql" endDelimiter=";;" splitStatements="true" stripComments="true">
            USE `art_relations`;;

            SET @resource_name = 'legal';;
            SET @privilege_name = 'terms';;
            SET @vendor_resource_id = (
              SELECT `id` FROM `vendor_resource` WHERE `resource` = @resource_name LIMIT 1
            );;

            -- Create the privilege(s)
            INSERT INTO `vendor_privilege` (`privilege`)
            SELECT * FROM (SELECT @privilege_name) AS tmp
            WHERE NOT EXISTS (
              SELECT `id` FROM `vendor_privilege` WHERE `privilege` = @privilege_name
            ) LIMIT 1;;
            SET @vendor_privilege_id = (
              SELECT `id` FROM `vendor_privilege` WHERE`privilege` = @privilege_name LIMIT 1
            );;

            -- Create the permissions
            INSERT INTO `vendor_permissions` (`resource_id`,`privilege_id`)
            VALUES (@vendor_resource_id, @vendor_privilege_id);;
            SET @vendor_permission_id = LAST_INSERT_ID();;

            -- Assign the permissions
            INSERT INTO vendor_role_permissions (role_id, permission_id, allow) (SELECT id, @vendor_permission_id, 'Y' FROM vendor_roles);;

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

                USE art_relations;;

                SET @vendor_resource_id = (SELECT id FROM vendor_resource WHERE resource = 'legal');;
                SET @vendor_privilege_id = (SELECT id FROM vendor_privilege WHERE privilege = 'terms' ORDER BY id DESC LIMIT 1);;
                SET @vendor_permission_id = (SELECT id FROM vendor_permissions WHERE resource_id = @vendor_resource_id AND privilege_id = @vendor_privilege_id);;

                DELETE FROM vendor_role_permissions WHERE vendor_role_permissions.`permission_id` = @vendor_permission_id;;
                DELETE FROM vendor_permissions WHERE vendor_permissions.`id` = @vendor_permission_id;;
                DELETE FROM vendor_privilege WHERE vendor_privilege .`id` = @vendor_privilege_id;;

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