<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-notification-table" author="manojd" dbms="oracle,postgresql,mssql">
        <createTable tableName="acm_notification">
            <column name="cm_notification_id" type="${idType}">
                <constraints primaryKey="true" primaryKeyName="pk_notification"/>
            </column>
            <column name="cm_notification_created" type="${timestampType}">
                <constraints nullable="false"/>
            </column>
            <column name="cm_notification_creator" type="VARCHAR(1024)">
                <constraints nullable="false"/>
            </column>

            <column name="cm_notification_status" type="VARCHAR(1024)">
                <constraints nullable="true"/>
            </column>
            <column name="cm_notification_action" type="VARCHAR(1024)">
                <constraints nullable="true"/>
            </column>
            <column name="cm_notification_note" type="CLOB">
                <constraints nullable="false"/>
            </column>
            <column name="cm_notification_comment" type="CLOB">
                <constraints nullable="false"/>
            </column>
        </createTable>
    </changeSet>

    <changeSet id="01-create-notification-table" author="manojd" dbms="mysql">
        <createTable tableName="acm_notification">
            <column name="cm_notification_id" type="${idType}">
                <constraints primaryKey="true" primaryKeyName="pk_notification"/>
            </column>
            <column name="cm_notification_created" type="${timestampType}" defaultValueComputed="${timestampFunction}">
                <constraints nullable="false"/>
            </column>
            <column name="cm_notification_creator" type="VARCHAR(1024)">
                <constraints nullable="false"/>
            </column>

            <column name="cm_notification_status" type="VARCHAR(1024)">
                <constraints nullable="true"/>
            </column>
            <column name="cm_notification_action" type="VARCHAR(1024)">
                <constraints nullable="true"/>
            </column>
            <column name="cm_notification_note" type="CLOB">
                <constraints nullable="false"/>
            </column>
            <column name="cm_notification_comment" type="CLOB">
                <constraints nullable="false"/>
            </column>
        </createTable>
    </changeSet>

    <changeSet id="02-change-ID-type" author="manojd" dbms="${excludeMSSQL}">
        <dropDefaultValue tableName="acm_notification" columnName="cm_notification_id"/>
        <modifyDataType tableName="acm_notification" columnName="cm_notification_id" newDataType="${fkIdType}"/>
    </changeSet>

    <changeSet id="02-1-change-ID-type-mssql" author="riste.tutureski" dbms="mssql" failOnError="false">
        <dropDefaultValue tableName="acm_notification" columnName="cm_notification_id"/>
    </changeSet>

    <changeSet id="02-2-change-ID-type-mssql" author="riste.tutureski" dbms="mssql">
        <dropPrimaryKey tableName="acm_notification" constraintName="pk_notification"/>
    </changeSet>

    <changeSet id="02-3-change-ID-type-mssql" author="riste.tutureski" dbms="mssql">
        <modifyDataType tableName="acm_notification" columnName="cm_notification_id" newDataType="${fkIdType}"/>
    </changeSet>

    <changeSet id="02-4-change-ID-type-mssql" author="riste.tutureski" dbms="mssql">
        <addNotNullConstraint tableName="acm_notification" columnName="cm_notification_id" columnDataType="${fkIdType}"/>
        <addPrimaryKey tableName="acm_notification" columnNames="cm_notification_id" constraintName="pk_notification"/>
    </changeSet>

    <changeSet id="03-add-modify-params" author="manojd" dbms="oracle,postgresql,mssql">
        <addColumn tableName="acm_notification">
            <column name="cm_modified" type="${timestampType}">
                <constraints nullable="false"/>
            </column>
            <column name="cm_modifier" type="VARCHAR(1024)">
                <constraints nullable="false"/>
            </column>
        </addColumn>
    </changeSet>

    <changeSet id="03-add-modify-params" author="manojd" dbms="mysql">
        <addColumn tableName="acm_notification">
            <column name="cm_modified" type="${timestampType}" defaultValueComputed="${timestampFunction}">
                <constraints nullable="false"/>
            </column>
            <column name="cm_modifier" type="VARCHAR(1024)">
                <constraints nullable="false"/>
            </column>
        </addColumn>
    </changeSet>

    <changeSet id="04-add-data-and-auto-params" author="manojd">
        <addColumn tableName="acm_notification">
            <column name="cm_notification_data" type="VARCHAR(1024)">
                <constraints nullable="false"/>
            </column>
            <column name="cm_notification_auto" type="VARCHAR(1024)">
                <constraints nullable="false"/>
            </column>
        </addColumn>
    </changeSet>

    <changeSet id="05-add-user-param" author="manojd">
        <addColumn tableName="acm_notification">
            <column name="cm_notification_user" type="VARCHAR(1024)">
                <constraints nullable="false"/>
            </column>
        </addColumn>
    </changeSet>

    <changeSet id="06-notification-drop-not-null-constraints" author="manojd">
        <dropNotNullConstraint tableName="acm_notification" columnName="cm_notification_note" columnDataType="CLOB"/>
        <dropNotNullConstraint tableName="acm_notification" columnName="cm_notification_data" columnDataType="VARCHAR(1024)"/>
        <dropNotNullConstraint tableName="acm_notification" columnName="cm_notification_auto" columnDataType="VARCHAR(1024)"/>
        <dropNotNullConstraint tableName="acm_notification" columnName="cm_notification_user" columnDataType="VARCHAR(1024)"/>
    </changeSet>

    <changeSet id="07-notification-drop-comment-column" author="manojd">
        <dropColumn tableName="acm_notification" columnName="cm_notification_comment"/>
    </changeSet>

    <changeSet id="08-add-title-column-notification-table" author="riste.tutureski">
        <addColumn tableName="acm_notification">
            <column name="cm_notification_title" type="VARCHAR(1024)">
                <constraints nullable="true"/>
            </column>
        </addColumn>
    </changeSet>

    <changeSet id="09-rename-auto-column-notification-table" author="riste.tutureski">
        <renameColumn tableName="acm_notification" oldColumnName="cm_notification_auto" newColumnName="cm_notification_type"
            columnDataType="VARCHAR(1024)"/>
    </changeSet>

    <changeSet id="10-add-state-column-notification-table" author="riste.tutureski">
        <addColumn tableName="acm_notification">
            <column name="cm_notification_state" type="VARCHAR(1024)">
                <constraints nullable="true"/>
            </column>
        </addColumn>
    </changeSet>

    <changeSet id="11-add-parent-columns-notification-table" author="riste.tutureski">
        <addColumn tableName="acm_notification">
            <column name="cm_notification_parent_id" type="${fkIdType}">
                <constraints nullable="true"/>
            </column>
            <column name="cm_notification_parent_type" type="VARCHAR(1024)">
                <constraints nullable="true"/>
            </column>
            <column name="cm_notification_parent_name" type="VARCHAR(1024)">
                <constraints nullable="true"/>
            </column>
            <column name="cm_notification_parent_title" type="VARCHAR(1024)">
                <constraints nullable="true"/>
            </column>
        </addColumn>
    </changeSet>

    <changeSet id="12-acm_notification-id" author="nebojsha.davidovikj">
        <createTable tableName="acm_notification_id">
            <column name="cm_seq_num" type="${idType}"/>
            <column name="cm_seq_name" type="VARCHAR(255)"/>
        </createTable>
        <insert tableName="acm_notification_id">
            <column name="cm_seq_num" value="100"></column>
            <column name="cm_seq_name" value="acm_notification"></column>
        </insert>
    </changeSet>

    <changeSet id="13-add-columns-related-objects" author="nadica.cuculova">
        <addColumn tableName="acm_notification">
            <column name="cm_related_object_id" type="${fkIdType}"/>
            <column name="cm_related_object_type" type="VARCHAR(1024)"/>
        </addColumn>
    </changeSet>

    <changeSet id="14-add-column-related_object_number" author="nadica.cuculova">
        <addColumn tableName="acm_notification">
            <column name="cm_related_object_number" type="VARCHAR(1024)"/>
        </addColumn>
    </changeSet>

    <changeSet id="15-add-column-notification-action-date" author="teng.wang">
        <addColumn tableName="acm_notification">
            <column name="cm_notification_action_date" type="${timestampType}"/>
        </addColumn>
    </changeSet>

    <changeSet id="16-add-column-template-model-name" author="stefan.sanevski">
        <addColumn tableName="acm_notification">
            <column name="cm_template_model_name" type="VARCHAR(1024)"/>
        </addColumn>
    </changeSet>

    <changeSet id="17-add-column-attach-files" author="stefan.sanevski">
        <addColumn tableName="acm_notification">
            <column name="cm_attach_files" type="BOOLEAN" defaultValueBoolean="false">
                <constraints nullable="false"/>
            </column>
        </addColumn>
    </changeSet>

    <changeSet id="18-create-notification-files-table" author="stefan.sanevski" >
        <createTable tableName="acm_notification_files">
            <column name="cm_notification_id" type="${fkIdType}">
                <constraints nullable="false"/>
            </column>
            <column name="cm_file_id" type="${fkIdType}"/>
        </createTable>
    </changeSet>

    <changeSet id="19-add-column-email-addresses" author="stefan.sanevski">
        <addColumn tableName="acm_notification">
            <column name="cm_email_addresses" type="CLOB"/>
        </addColumn>
    </changeSet>
    
    <changeSet id="20-add-column-email-group" author="bojan.milenkoski">
        <addColumn tableName="acm_notification">
            <column name="cm_email_group" type="VARCHAR(128)"/>
        </addColumn>
    </changeSet>

    <changeSet id="21-add-column-subject" author="stefan.sanevski">
        <addColumn tableName="acm_notification">
            <column name="cm_subject" type="CLOB"/>
        </addColumn>
    </changeSet>

    <changeSet id="22-add-column-notification-type" author="stefan.sanevski">
        <addColumn tableName="acm_notification">
            <column name="cm_type" type="CLOB"/>
        </addColumn>
    </changeSet>

    <changeSet id="23-add-column-email-content" author="viktorija.kostovska">
        <addColumn tableName="acm_notification">
            <column name="cm_email_content" type="CLOB"/>
        </addColumn>
    </changeSet>

    <changeSet id="24-add-cc-bcc-email-addresses-columns" author="ana.serafimoska">
        <addColumn tableName="acm_notification">
            <column name="cm_cc_email_addresses" type="CLOB"/>
            <column name="cm_bcc_email_addresses" type="CLOB"/>
        </addColumn>
    </changeSet>

    <changeSet id="25-change-cm-notification-datetime" author="marija.blazhevska">
        <modifyDataType tableName="acm_notification" columnName="cm_notification_created" newDataType="DATETIME"/>
        <modifyDataType tableName="acm_notification" columnName="cm_notification_action_date" newDataType="DATETIME"/>
        <modifyDataType tableName="acm_notification" columnName="cm_modified" newDataType="DATETIME"/>
    </changeSet>

</databaseChangeLog>
