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

            SET @resource = 'warehouse';;
            SET @description = 'Bulk takedowns and updates';;
            SET @privilege_name = 'Bulk Takedowns and Updates';;

            INSERT INTO orchadmin_privileges(privilege) VALUES(@privilege_name);;

            SET @resource_id = (SELECT orchadmin_resource_id FROM orchadmin_resources WHERE resource = @resource LIMIT 1);;
            SET @privilege_id = (SELECT orchadmin_privilege_id FROM orchadmin_privileges WHERE privilege= @privilege_name LIMIT 1);;

            INSERT INTO orchadmin_permissions (orchadmin_resource_id, orchadmin_privilege_id, description)
            VALUES(@resource_id, @privilege_id, @description);;
            SET @orchadmin_permission_id = LAST_INSERT_ID();;

            -- Assign the permission to the Technology Manager role
            INSERT INTO orchadmin_role_permissions(orchadmin_role_id, orchadmin_permission_id, allow)
            SELECT orchadmin_role_id, @orchadmin_permission_id, 'Y'
            FROM orchadmin_roles
            WHERE orchadmin_role= 'Technology Manager';;
            -- Assign the permission to the Operations Manager role
            INSERT INTO orchadmin_role_permissions(orchadmin_role_id, orchadmin_permission_id, allow)
            SELECT orchadmin_role_id, @orchadmin_permission_id, 'Y'
            FROM orchadmin_roles
            WHERE orchadmin_role= 'Operations Manager';;
            -- Assign the permission to the Product Manager role
            INSERT INTO orchadmin_role_permissions(orchadmin_role_id, orchadmin_permission_id, allow)
            SELECT orchadmin_role_id, @orchadmin_permission_id, 'Y'
            FROM orchadmin_roles
            WHERE orchadmin_role= 'Product Manager';;
            -- Assign the permission to the Business Development role
            INSERT INTO orchadmin_role_permissions(orchadmin_role_id, orchadmin_permission_id, allow)
            SELECT orchadmin_role_id, @orchadmin_permission_id, 'Y'
            FROM orchadmin_roles
            WHERE orchadmin_role= 'Business Development';;
            -- Assign the permission to the Legal role
            INSERT INTO orchadmin_role_permissions(orchadmin_role_id, orchadmin_permission_id, allow)
            SELECT orchadmin_role_id, @orchadmin_permission_id, 'Y'
            FROM orchadmin_roles
            WHERE orchadmin_role= 'Legal';;
            -- Assign the permission to the Partner role
            INSERT INTO orchadmin_role_permissions(orchadmin_role_id, orchadmin_permission_id, allow)
            SELECT orchadmin_role_id, @orchadmin_permission_id, 'Y'
            FROM orchadmin_roles
            WHERE orchadmin_role= 'Partner';;
            -- Assign the permission to the Content Manager role
            INSERT INTO orchadmin_role_permissions(orchadmin_role_id, orchadmin_permission_id, allow)
            SELECT orchadmin_role_id, @orchadmin_permission_id, 'Y'
            FROM orchadmin_roles
            WHERE orchadmin_role= 'Content Manager';;
            -- Assign the permission to the Warehouse Manager role
            INSERT INTO orchadmin_role_permissions(orchadmin_role_id, orchadmin_permission_id, allow)
            SELECT orchadmin_role_id, @orchadmin_permission_id, 'Y'
            FROM orchadmin_roles
            WHERE orchadmin_role= 'Warehouse Manager';;
            -- Assign the permission to the Artist and Label Relations role
            INSERT INTO orchadmin_role_permissions(orchadmin_role_id, orchadmin_permission_id, allow)
            SELECT orchadmin_role_id, @orchadmin_permission_id, 'Y'
            FROM orchadmin_roles
            WHERE orchadmin_role= 'Artist and Label Relations';;
            -- Assign the permission to the Ringtone Manager role
            INSERT INTO orchadmin_role_permissions(orchadmin_role_id, orchadmin_permission_id, allow)
            SELECT orchadmin_role_id, @orchadmin_permission_id, 'Y'
            FROM orchadmin_roles
            WHERE orchadmin_role= 'Ringtone Manager';;
            -- Assign the permission to the Management role
            INSERT INTO orchadmin_role_permissions(orchadmin_role_id, orchadmin_permission_id, allow)
            SELECT orchadmin_role_id, @orchadmin_permission_id, 'Y'
            FROM orchadmin_roles
            WHERE orchadmin_role= 'Management';;
            -- Assign the permission to the Warehouse Operator role
            INSERT INTO orchadmin_role_permissions(orchadmin_role_id, orchadmin_permission_id, allow)
            SELECT orchadmin_role_id, @orchadmin_permission_id, 'Y'
            FROM orchadmin_roles
            WHERE orchadmin_role= 'Warehouse Operator';;
       </sql>
       <rollback>
            USE art_relations;;

            SET @resource = 'warehouse';;
            SET @description = 'Bulk takedowns and updates';;
            SET @privilege_name = 'Bulk Takedowns and Updates';;

            SET @resource_id = (SELECT orchadmin_resource_id FROM orchadmin_resources WHERE resource = @resource LIMIT 1);;
            SET @permission_id = (SELECT orchadmin_permission_id FROM orchadmin_permissions WHERE orchadmin_resource_id = @resource_id AND description = @description LIMIT 1);;

            DELETE FROM orchadmin_privileges WHERE privilege = @privilege_name;;
            DELETE FROM orchadmin_role_permissions WHERE orchadmin_permission_id = @permission_id 
            AND orchadmin_role_id =(SELECT orchadmin_role_id FROM orchadmin_roles WHERE orchadmin_role = 'Technology Manager') ;;
            DELETE FROM orchadmin_role_permissions WHERE orchadmin_permission_id = @permission_id
            AND orchadmin_role_id =(SELECT orchadmin_role_id FROM orchadmin_roles WHERE orchadmin_role = 'Operations Manager');;
            DELETE FROM orchadmin_role_permissions WHERE orchadmin_permission_id = @permission_id 
            AND orchadmin_role_id =(SELECT orchadmin_role_id FROM orchadmin_roles WHERE orchadmin_role = 'Product Manager');;
            DELETE FROM orchadmin_role_permissions WHERE orchadmin_permission_id = @permission_id 
            AND orchadmin_role_id =(SELECT orchadmin_role_id FROM orchadmin_roles WHERE orchadmin_role = 'Business Development');;
            DELETE FROM orchadmin_role_permissions WHERE orchadmin_permission_id = @permission_id 
            AND orchadmin_role_id =(SELECT orchadmin_role_id FROM orchadmin_roles WHERE orchadmin_role = 'Legal');;
            DELETE FROM orchadmin_role_permissions WHERE orchadmin_permission_id = @permission_id 
            AND orchadmin_role_id =(SELECT orchadmin_role_id FROM orchadmin_roles WHERE orchadmin_role = 'Partner');;
            DELETE FROM orchadmin_role_permissions WHERE orchadmin_permission_id = @permission_id 
            AND orchadmin_role_id = (SELECT orchadmin_role_id FROM orchadmin_roles WHERE orchadmin_role = 'Content Manager');;
            DELETE FROM orchadmin_role_permissions WHERE orchadmin_permission_id = @permission_id 
            AND orchadmin_role_id = (SELECT orchadmin_role_id FROM orchadmin_roles WHERE orchadmin_role = 'Warehouse Manager');;
            DELETE FROM orchadmin_role_permissions WHERE orchadmin_permission_id = @permission_id 
            AND orchadmin_role_id = (SELECT orchadmin_role_id FROM orchadmin_roles WHERE orchadmin_role = 'Artist and Label Relations');;
            DELETE FROM orchadmin_role_permissions WHERE orchadmin_permission_id = @permission_id 
            AND orchadmin_role_id = (SELECT orchadmin_role_id FROM orchadmin_roles WHERE orchadmin_role = 'Ringtone Manager');;
            DELETE FROM orchadmin_role_permissions WHERE orchadmin_permission_id = @permission_id 
            AND orchadmin_role_id = (SELECT orchadmin_role_id FROM orchadmin_roles WHERE orchadmin_role = 'Management');;
            DELETE FROM orchadmin_role_permissions WHERE orchadmin_permission_id = @permission_id 
            AND orchadmin_role_id = (SELECT orchadmin_role_id FROM orchadmin_roles WHERE orchadmin_role = 'Warehouse Operator');;
            
            DELETE FROM orchadmin_permissions WHERE orchadmin_permission_id = @permission_id AND orchadmin_resource_id = @resource_id;;
       </rollback>
   </changeSet>
</databaseChangeLog>
