aboutsummaryrefslogtreecommitdiff
path: root/schema/changelog-3.15.xml
blob: a9bea1ca1a6cce7d4b5a02869b614633851611d0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
<?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.15">

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

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

    <dropForeignKeyConstraint baseTableName="attribute_aliases" constraintName="fk_attribute_aliases_deviceid" />
    <dropUniqueConstraint tableName="attribute_aliases" constraintName="uk_deviceid_attribute" />

    <dropTable tableName="attribute_aliases" />

    <dropColumn tableName="servers" columnName="timezone" />
    <dropColumn tableName="servers" columnName="speedunit" />
    <dropColumn tableName="servers" columnName="distanceunit" />

    <dropColumn tableName="users" columnName="timezone" />
    <dropColumn tableName="users" columnName="speedunit" />
    <dropColumn tableName="users" columnName="distanceunit" />

    <createTable tableName="commands">
      <column name="id" type="INT" autoIncrement="true">
        <constraints primaryKey="true" />
      </column>
      <column name="description" type="VARCHAR(4000)">
        <constraints nullable="false" />
      </column>
      <column name="type" type="VARCHAR(128)">
        <constraints nullable="false" />
      </column>
      <column name="textchannel" type="BOOLEAN" defaultValueBoolean="false">
        <constraints nullable="false" />
      </column>
      <column name="attributes" type="VARCHAR(4000)">
        <constraints nullable="false" />
      </column>
    </createTable>

    <createTable tableName="user_command">
      <column name="userid" type="INT">
        <constraints nullable="false" />
      </column>
      <column name="commandid" type="INT">
        <constraints nullable="false" />
      </column>
    </createTable>

    <addForeignKeyConstraint baseTableName="user_command" baseColumnNames="userid" constraintName="fk_user_command_userid" referencedTableName="users" referencedColumnNames="id" onDelete="CASCADE" />
    <addForeignKeyConstraint baseTableName="user_command" baseColumnNames="commandid" constraintName="fk_user_command_commandid" referencedTableName="commands" referencedColumnNames="id" onDelete="CASCADE" />

    <createTable tableName="group_command">
      <column name="groupid" type="INT">
        <constraints nullable="false" />
      </column>
      <column name="commandid" type="INT">
        <constraints nullable="false" />
      </column>
    </createTable>

    <addForeignKeyConstraint baseTableName="group_command" baseColumnNames="groupid" constraintName="fk_group_command_groupid" referencedTableName="groups" referencedColumnNames="id" onDelete="CASCADE" />
    <addForeignKeyConstraint baseTableName="group_command" baseColumnNames="commandid" constraintName="fk_group_command_commandid" referencedTableName="commands" referencedColumnNames="id" onDelete="CASCADE" />

    <createTable tableName="device_command">
      <column name="deviceid" type="INT">
        <constraints nullable="false" />
      </column>
      <column name="commandid" type="INT">
        <constraints nullable="false" />
      </column>
    </createTable>

    <addForeignKeyConstraint baseTableName="device_command" baseColumnNames="deviceid" constraintName="fk_device_command_deviceid" referencedTableName="devices" referencedColumnNames="id" onDelete="CASCADE" />
    <addForeignKeyConstraint baseTableName="device_command" baseColumnNames="commandid" constraintName="fk_device_command_commandid" referencedTableName="commands" referencedColumnNames="id" onDelete="CASCADE" />

    <addColumn tableName="servers">
      <column name="limitcommands" type="BOOLEAN" defaultValueBoolean="false" />
    </addColumn>

    <addColumn tableName="users">
      <column name="limitcommands" type="BOOLEAN" defaultValueBoolean="false" />
    </addColumn>

    <addColumn tableName="notifications">
      <column name="always" type="BOOLEAN" defaultValueBoolean="false" valueBoolean="true">
        <constraints nullable="false" />
      </column>
    </addColumn>

    <createTable tableName="user_notification">
      <column name="userid" type="INT">
        <constraints nullable="false" />
      </column>
      <column name="notificationid" type="INT">
        <constraints nullable="false" />
      </column>
    </createTable>

    <addForeignKeyConstraint baseTableName="user_notification" baseColumnNames="userid" constraintName="fk_user_notification_userid" referencedTableName="users" referencedColumnNames="id" onDelete="CASCADE" />

    <sql>
      INSERT INTO user_notification (notificationid, userid) SELECT id AS notificationid, userid FROM notifications;
    </sql>

    <dropForeignKeyConstraint baseTableName="notifications" constraintName="fk_notifications_userid" />
    <dropColumn tableName="notifications" columnName="userid" />

    <addForeignKeyConstraint baseTableName="user_notification" baseColumnNames="notificationid" constraintName="fk_user_notification_notificationid" referencedTableName="notifications" referencedColumnNames="id" onDelete="CASCADE" />

    <createTable tableName="group_notification">
      <column name="groupid" type="INT">
        <constraints nullable="false" />
      </column>
      <column name="notificationid" type="INT">
        <constraints nullable="false" />
      </column>
    </createTable>

    <addForeignKeyConstraint baseTableName="group_notification" baseColumnNames="groupid" constraintName="fk_group_notification_groupid" referencedTableName="groups" referencedColumnNames="id" onDelete="CASCADE" />
    <addForeignKeyConstraint baseTableName="group_notification" baseColumnNames="notificationid" constraintName="fk_group_notification_notificationid" referencedTableName="notifications" referencedColumnNames="id" onDelete="CASCADE" />

    <createTable tableName="device_notification">
      <column name="deviceid" type="INT">
        <constraints nullable="false" />
      </column>
      <column name="notificationid" type="INT">
        <constraints nullable="false" />
      </column>
    </createTable>

    <addForeignKeyConstraint baseTableName="device_notification" baseColumnNames="deviceid" constraintName="fk_device_notification_deviceid" referencedTableName="devices" referencedColumnNames="id" onDelete="CASCADE" />
    <addForeignKeyConstraint baseTableName="device_notification" baseColumnNames="notificationid" constraintName="fk_device_notification_notificationid" referencedTableName="notifications" referencedColumnNames="id" onDelete="CASCADE" />

    <dropNotNullConstraint tableName="users" columnName="hashedpassword" columnDataType="VARCHAR(128)" />
    <dropNotNullConstraint tableName="users" columnName="salt" columnDataType="VARCHAR(128)" />

    <addColumn tableName="users">
      <column name="login" type="VARCHAR(128)" />
    </addColumn>

  </changeSet>

</databaseChangeLog>