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

    <changeSet id="01-create-person-contact-table" author="nebojsha.davidovikj" dbms="oracle,postgresql,mssql">
        <createTable tableName="acm_person_contact">
            <column name="cm_person_contact_id" type="${idType}">
                <constraints primaryKey="true" primaryKeyName="pk_person_contact"/>
            </column>
            <column name="cm_person_contact_attention" type="VARCHAR(1024)"/>
            <column name="cm_person_contact_company_name" type="VARCHAR(1024)"/>
            <column name="cm_person_contact_name" type="VARCHAR(1024)"/>

            <!-- Audit-->
            <column name="cm_person_contact_created" type="${timestampType}">
                <constraints nullable="false"/>
            </column>
            <column name="cm_person_contact_creator" type="VARCHAR(1024)">
                <constraints nullable="false"/>
            </column>
            <column name="cm_person_contact_modified" type="${timestampType}">
                <constraints nullable="false"/>
            </column>
            <column name="cm_person_contact_modifier" type="VARCHAR(1024)">
                <constraints nullable="false"/>
            </column>
        </createTable>
    </changeSet>

    <changeSet id="01-create-person-contact-table" author="nebojsha.davidovikj" dbms="mysql">
        <createTable tableName="acm_person_contact">
            <column name="cm_person_contact_id" type="${idType}">
                <constraints primaryKey="true" primaryKeyName="pk_person_contact"/>
            </column>
            <column name="cm_person_contact_attention" type="VARCHAR(1024)"/>
            <column name="cm_person_contact_company_name" type="VARCHAR(1024)"/>
            <column name="cm_person_contact_name" type="VARCHAR(1024)"/>

            <!-- Audit-->
            <column name="cm_person_contact_created" type="${timestampType}" defaultValueComputed="${timestampFunction}">
                <constraints nullable="false"/>
            </column>
            <column name="cm_person_contact_creator" type="VARCHAR(1024)">
                <constraints nullable="false"/>
            </column>
            <column name="cm_person_contact_modified" type="${timestampType}" defaultValueComputed="${timestampFunction}">
                <constraints nullable="false"/>
            </column>
            <column name="cm_person_contact_modifier" type="VARCHAR(1024)">
                <constraints nullable="false"/>
            </column>
        </createTable>
    </changeSet>

    <changeSet id="02-add-person-contact-address-table" author="nebojsha.davidovikj">
        <createTable tableName="acm_person_cntct_postal_address">
            <column name="cm_person_contact_id" type="${fkIdType}">
                <constraints nullable="false"/>
            </column>
            <column name="cm_address_id" type="${fkIdType}">
                <constraints nullable="false"/>
            </column>
        </createTable>
        <addUniqueConstraint tableName="acm_person_cntct_postal_address" columnNames="cm_person_contact_id, cm_address_id"/>
    </changeSet>

    <changeSet id="03-add-person-contact-contact-method-table" author="nebojsha.davidovikj">
        <createTable tableName="acm_person_cntct_cntct_method">
            <column name="cm_person_contact_id" type="${fkIdType}">
                <constraints nullable="false"/>
            </column>
            <column name="cm_contact_method_id" type="${fkIdType}">
                <constraints nullable="false"/>
            </column>
        </createTable>
        <addUniqueConstraint tableName="acm_person_cntct_cntct_method" columnNames="cm_person_contact_id, cm_contact_method_id"/>
    </changeSet>

    <changeSet id="04-add-person-contact-identification-table" author="nebojsha.davidovikj">
        <createTable tableName="acm_person_cntct_ident">
            <column name="cm_person_contact_id" type="${fkIdType}">
                <constraints nullable="false"/>
            </column>
            <column name="cm_identification_id" type="${fkIdType}">
                <constraints nullable="false"/>
            </column>
        </createTable>
        <addUniqueConstraint tableName="acm_person_cntct_ident" columnNames="cm_person_contact_id, cm_identification_id"/>
    </changeSet>

    <changeSet id="05-acm_person-contact-id" author="nebojsha.davidovikj">
        <createTable tableName="acm_person_contact_id">
            <column name="cm_seq_num" type="${idType}"/>
            <column name="cm_seq_name" type="VARCHAR(255)"/>
        </createTable>
        <insert tableName="acm_person_contact_id">
            <column name="cm_seq_num" value="100"></column>
            <column name="cm_seq_name" value="acm_person_contact"></column>
        </insert>
    </changeSet>

    <changeSet id="06-acm_person-contact-add-class-name-column" author="nebojsha.davidovikj">
        <addColumn tableName="acm_person_contact">
            <column name="cm_class_name" type="varchar(400)" defaultValue="com.armedia.acm.plugins.person.model.PersonContact">
                <constraints nullable="false"/>
            </column>
        </addColumn>
    </changeSet>

    <changeSet id="07-acm_person-contact-add-first-middle-last-names" author="manoj.dhungana">
        <addColumn tableName="acm_person_contact">
            <column name="cm_person_contact_first_name" type="VARCHAR(1024)"/>
            <column name="cm_person_contact_middle_inits" type="VARCHAR(1024)"/>
            <column name="cm_person_contact_last_name" type="VARCHAR(1024)"/>
        </addColumn>
    </changeSet>

    <changeSet id="08-change_cm_person_contact_datetime" author="mario.gjurcheski" dbms="mysql">
        <modifyDataType tableName="acm_person_contact" columnName="cm_person_contact_created" newDataType="DATETIME"/>
        <modifyDataType tableName="acm_person_contact" columnName="cm_person_contact_modified" newDataType="DATETIME"/>
    </changeSet>

</databaseChangeLog>