<?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"
  xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
                      http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.4.xsd"
  logicalFilePath="changelog-3.7">

  <changeSet author="author" id="changelog-3.7">

    <preConditions onFail="MARK_RAN">
      <not>
        <tableExists tableName="tc_servers" />
      </not>
    </preConditions>

    <update tableName="devices">
      <column name="groupid" />
      <where>groupid NOT IN (SELECT id FROM groups)</where>
    </update>

    <addForeignKeyConstraint baseColumnNames="groupid" baseTableName="devices" constraintName="fk_device_group_groupid" onDelete="SET NULL" onUpdate="RESTRICT" referencedColumnNames="id" referencedTableName="groups" />

    <update tableName="groups">
      <column name="groupid" />
      <where>groupid NOT IN (SELECT id FROM (SELECT DISTINCT id FROM groups) AS groups_ids)</where>
    </update>

    <addColumn tableName="devices">
      <column name="attributes" type="VARCHAR(4096)" />
    </addColumn>

    <dropColumn tableName="devices" columnName="motion" />

    <dropColumn tableName="devices" columnName="status" />

    <addColumn tableName="groups">
      <column name="attributes" type="VARCHAR(4096)" />
    </addColumn>

    <addColumn tableName="server">
      <column name="attributes" type="VARCHAR(4096)" />
    </addColumn>

  </changeSet>

  <changeSet author="author" id="changelog-3.7-notmssql">

    <preConditions onFail="MARK_RAN">
      <not>
        <tableExists tableName="tc_servers" />
      </not>
      <not>
        <dbms type="mssql" />
      </not>
    </preConditions>

    <addForeignKeyConstraint baseColumnNames="groupid" baseTableName="groups" constraintName="fk_group_group_groupid" onDelete="SET NULL" onUpdate="RESTRICT" referencedColumnNames="id" referencedTableName="groups" />

  </changeSet>

</databaseChangeLog>
