12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- <?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-2.0.xsd">
- <changeSet id="1" author="moxie">
- <createTable tableName="messages">
- <column name="id" type="bigint" autoIncrement="true">
- <constraints primaryKey="true" nullable="false"/>
- </column>
- <column name="type" type="tinyint">
- <constraints nullable="false"/>
- </column>
- <column name="relay" type="text">
- <constraints nullable="false"/>
- </column>
- <column name="timestamp" type="bigint">
- <constraints nullable="false"/>
- </column>
- <column name="source" type="text">
- <constraints nullable="false"/>
- </column>
- <column name="source_device" type="int">
- <constraints nullable="false"/>
- </column>
- <column name="destination" type="text">
- <constraints nullable="false"/>
- </column>
- <column name="destination_device" type="int">
- <constraints nullable="false"/>
- </column>
- <column name="message" type="bytea">
- <constraints nullable="false"/>
- </column>
- <column name="account_id" type="bigint">
- <constraints nullable="false"/>
- </column>
- <column name="device_id" type="bigint">
- <constraints nullable="false"/>
- </column>
- <column name="encrypted_message" type="text">
- <constraints nullable="false"/>
- </column>
- </createTable>
- <createIndex tableName="messages" indexName="destination_index">
- <column name="destination"></column>
- <column name="destination_device"></column>
- </createIndex>
- <createIndex tableName="messages" indexName="destination_and_type_index">
- <column name="destination"></column>
- <column name="destination_device"></column>
- <column name="type"></column>
- </createIndex>
- <createIndex tableName="messages" indexName="messages_account_and_device">
- <column name="account_id"/>
- <column name="device_id"/>
- </createIndex>
- </changeSet>
- <changeSet id="2" author="moxie">
- <addColumn tableName="messages">
- <column name="content" type="bytea"/>
- </addColumn>
- <dropNotNullConstraint tableName="messages" columnName="message"/>
- </changeSet>
- <changeSet id="3" author="moxie">
- <sql>CREATE RULE bounded_message_queue AS ON INSERT TO messages DO ALSO DELETE FROM messages WHERE id IN (SELECT id FROM messages WHERE destination = NEW.destination AND destination_device = NEW.destination_device ORDER BY timestamp DESC OFFSET 5000);</sql>
- </changeSet>
- <changeSet id="4" author="moxie">
- <sql>DROP RULE bounded_message_queue ON messages;</sql>
- <sql>CREATE RULE bounded_message_queue AS ON INSERT TO messages DO ALSO DELETE FROM messages WHERE id IN (SELECT id FROM messages WHERE destination = NEW.destination AND destination_device = NEW.destination_device ORDER BY timestamp DESC OFFSET 1000);</sql>
- </changeSet>
- </databaseChangeLog>
|