<databaseChangeLog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
                   xsi:schemaLocation="
            http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">

    <changeSet id="01-create-acm_zylab_file_metadata-table" author="aleksandar.acevski" dbms="mysql">
        <createTable tableName="acm_zylab_file_metadata">
            <column name="cm_zylab_metadata_id" type="${idType}">
                <constraints primaryKey="true" primaryKeyName="pk_zylab_metadata"/>
            </column>
            <column name="cm_class_name" type="TEXT"/>
            <column name="cm_matter_id" type="LONG"/>
            <column name="cm_production_key" type="TEXT"/>
            <column name="cm_zylab_id" type="LONG"/>
            <column name="cm_beg_bates_number" type="TEXT"/>
            <column name="cm_end_bates_number" type="TEXT"/>
            <column name="cm_produced_pages" type="INTEGER"/>
            <column name="cm_production_create_date" type="${timestampType}"/>
            <column name="cm_contains_redaction" type="BOOLEAN"/>
            <column name="cm_redaction_code_1" type="TEXT"/>
            <column name="cm_redaction_code_2" type="TEXT"/>
            <column name="cm_redaction_justification" type="TEXT"/>
            <column name="cm_custodian" type="TEXT"/>
            <column name="cm_doc_name" type="TEXT"/>
            <column name="cm_doc_page_count" type="INTEGER"/>
            <column name="cm_doc_date" type="${timestampType}"/>
            <column name="cm_doc_ext" type="TEXT"/>
            <column name="cm_doc_size" type="LONG"/>
            <column name="cm_has_attachment" type="BOOLEAN"/>
            <column name="cm_is_attachment" type="BOOLEAN"/>
            <column name="cm_email_from" type="TEXT"/>
            <column name="cm_email_recipient" type="TEXT"/>
            <column name="cm_multimedia_duration_sec" type="INTEGER"/>
            <column name="cm_multimedia_properties" type="TEXT"/>
            <column name="cm_reviewed_analysis" type="TEXT"/>
            <column name="cm_last_reviewed_by" type="TEXT"/>
            <column name="cm_source" type="TEXT"/>
        </createTable>
    </changeSet>

    <changeSet id="02-create-acm_zylab_file_metadata-table" author="aleksandar.acevski" dbms="oracle,postgresql,mssql">
        <createTable tableName="acm_zylab_file_metadata">
            <column name="cm_zylab_metadata_id" type="${idType}">
                <constraints primaryKey="true" primaryKeyName="pk_zylab_metadata"/>
            </column>
            <column name="cm_class_name" type="VARCHAR(1024)"/>
            <column name="cm_matter_id" type="LONG"/>
            <column name="cm_production_key" type="VARCHAR(1024)"/>
            <column name="cm_zylab_id" type="LONG"/>
            <column name="cm_beg_bates_number" type="VARCHAR(256)"/>
            <column name="cm_end_bates_number" type="VARCHAR(256)"/>
            <column name="cm_produced_pages" type="INTEGER"/>
            <column name="cm_production_create_date" type="${timestampType}"/>
            <column name="cm_contains_redaction" type="BOOLEAN"/>
            <column name="cm_redaction_code_1" type="VARCHAR(4000)"/>
            <column name="cm_redaction_code_2" type="VARCHAR(4000)"/>
            <column name="cm_redaction_justification" type="VARCHAR(1024)"/>
            <column name="cm_custodian" type="VARCHAR(1024)"/>
            <column name="cm_doc_name" type="VARCHAR(1024)"/>
            <column name="cm_doc_page_count" type="INTEGER"/>
            <column name="cm_doc_date" type="${timestampType}"/>
            <column name="cm_doc_ext" type="VARCHAR(256)"/>
            <column name="cm_doc_size" type="LONG"/>
            <column name="cm_has_attachment" type="BOOLEAN"/>
            <column name="cm_is_attachment" type="BOOLEAN"/>
            <column name="cm_email_from" type="VARCHAR(4000)"/>
            <column name="cm_email_recipient" type="VARCHAR(4000)"/>
            <column name="cm_multimedia_duration_sec" type="INTEGER"/>
            <column name="cm_multimedia_properties" type="VARCHAR(4000)"/>
            <column name="cm_reviewed_analysis" type="VARCHAR(1024)"/>
            <column name="cm_last_reviewed_by" type="VARCHAR(1024)"/>
            <column name="cm_source" type="VARCHAR(1024)"/>
        </createTable>
    </changeSet>

    <changeSet id="03-create-acm_zylab_file_metadata-seq" author="aleksandar.acevski">
        <createTable tableName="acm_zylab_file_metadata_id">
            <column name="cm_seq_num" type="${idType}"/>
            <column name="cm_seq_name" type="VARCHAR(255)"/>
        </createTable>
        <insert tableName="acm_zylab_file_metadata_id">
            <column name="cm_seq_num" value="100"></column>
            <column name="cm_seq_name" value="acm_zylab_file_metadata"></column>
        </insert>
    </changeSet>

    <changeSet id="04-add_exempt_withheld_reason_to_zylab-file-metadata" author="aleksandar.acevski" dbms="mysql">
        <addColumn tableName="acm_zylab_file_metadata">
            <column name="cm_exempt_withheld_reason" type="TEXT"/>
        </addColumn>
    </changeSet>

    <changeSet id="04-add_exempt_withheld_reason_to_zylab-file-metadata" author="aleksandar.acevski"
               dbms="oracle,postgresql,mssql">
        <addColumn tableName="acm_zylab_file_metadata">
            <column name="cm_exempt_withheld_reason" type="VARCHAR(1024)"/>
        </addColumn>
    </changeSet>

    <changeSet id="05-add_exempt_withheld_to_zylab-file-metadata" author="aleksandar.acevski">
        <addColumn tableName="acm_zylab_file_metadata">
            <column name="cm_exempt_withheld" type="BOOLEAN"/>
        </addColumn>
    </changeSet>

    <changeSet id="06-drop-bagbates-numbers-from-zylab-file-metadata" author="aleksandar.acevski">
        <dropColumn tableName="acm_zylab_file_metadata" columnName="cm_beg_bates_number"/>
        <dropColumn tableName="acm_zylab_file_metadata" columnName="cm_end_bates_number"/>
    </changeSet>

    <changeSet id="07-change-cm-zylab-file-datetime" author="marija.blazhevska">
        <modifyDataType tableName="acm_zylab_file_metadata" columnName="cm_doc_date" newDataType="DATETIME"/>
        <modifyDataType tableName="acm_zylab_file_metadata" columnName="cm_production_create_date" newDataType="DATETIME"/>
    </changeSet>

    <changeSet id="08-add_name_field_to_zylab-file-metadata" author="aleksandar.acevski" dbms="mysql">
        <addColumn tableName="acm_zylab_file_metadata">
            <column name="cm_name" type="TEXT"/>
        </addColumn>
    </changeSet>

    <changeSet id="08-add_name_field_to_zylab-file-metadata" author="aleksandar.acevski"
               dbms="oracle,postgresql,mssql">
        <addColumn tableName="acm_zylab_file_metadata">
            <column name="cm_name" type="VARCHAR(1024)"/>
        </addColumn>
    </changeSet>

    <changeSet id="09-change-character-set-to-filename" author="ivan.tasevski" dbms="mysql">
        <sql>
            ALTER TABLE acm_zylab_file_metadata MODIFY COLUMN cm_doc_name VARCHAR(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL;
        </sql>
    </changeSet>
    <changeSet id="10-change-character-set-to-filename" author="bojan.milenkoski" dbms="mysql">
        <sql>
            ALTER TABLE acm_zylab_file_metadata MODIFY COLUMN cm_name TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
        </sql>
    </changeSet>

</databaseChangeLog>
