[AB-103] adding triggers to update created and updating attributes on tables

fixing error handling in installer
merging change sets to larger operations
adding check constraints
fixing suggestion id handling
applying naming conventions to various columns
adding indices to tables
adding user in server and user locking
This commit is contained in:
Sheldan
2021-02-07 03:06:48 +01:00
parent dac3b0887f
commit 038d5c3832
126 changed files with 1416 additions and 986 deletions

View File

@@ -1,11 +1,13 @@
package dev.sheldan.abstracto.core.service.management;
import dev.sheldan.abstracto.core.command.models.TableLocks;
import dev.sheldan.abstracto.core.exception.UserInServerNotFoundException;
import dev.sheldan.abstracto.core.models.ServerUser;
import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.models.database.AUser;
import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import dev.sheldan.abstracto.core.repository.UserInServerRepository;
import dev.sheldan.abstracto.core.service.LockService;
import lombok.extern.slf4j.Slf4j;
import net.dv8tion.jda.api.entities.Member;
import org.springframework.beans.factory.annotation.Autowired;
@@ -30,6 +32,9 @@ public class UserInServerManagementServiceBean implements UserInServerManagement
@Autowired
private UserManagementService userManagementService;
@Autowired
private LockService lockService;
@Autowired
private UserInServerManagementServiceBean self;
@@ -91,7 +96,6 @@ public class UserInServerManagementServiceBean implements UserInServerManagement
log.info("Creating user {} in server {}.", userId, serverId);
AUserInAServer aUserInAServer;
try {
// TODO there seems to be an issue, of trying to create the user a second time
aUserInAServer = self.tryToCreateAUserInAServer(serverId, userId);
} catch (DataIntegrityViolationException ex) {
log.info("Concurrency exception creating user - retrieving.");
@@ -102,6 +106,7 @@ public class UserInServerManagementServiceBean implements UserInServerManagement
@Transactional(propagation = Propagation.REQUIRES_NEW)
public AUserInAServer tryToCreateAUserInAServer(Long guildId, Long userId) {
lockService.lockTable(TableLocks.USER_IN_SERVER);
AUserInAServer aUserInAServer = serverManagementService.addUserToServer(guildId, userId);
userInServerRepository.save(aUserInAServer);
return aUserInAServer;

View File

@@ -1,7 +1,9 @@
package dev.sheldan.abstracto.core.service.management;
import dev.sheldan.abstracto.core.command.models.TableLocks;
import dev.sheldan.abstracto.core.models.database.AUser;
import dev.sheldan.abstracto.core.repository.UserRepository;
import dev.sheldan.abstracto.core.service.LockService;
import lombok.extern.slf4j.Slf4j;
import net.dv8tion.jda.api.entities.Member;
import org.springframework.beans.factory.annotation.Autowired;
@@ -22,6 +24,9 @@ public class UserManagementServiceBean implements UserManagementService {
@Autowired
private UserManagementServiceBean self;
@Autowired
private LockService lockService;
@Override
public AUser createUser(Member member) {
return createUser(member.getIdLong());
@@ -46,6 +51,7 @@ public class UserManagementServiceBean implements UserManagementService {
@Transactional(propagation = Propagation.REQUIRES_NEW)
public AUser tryCreateUser(Long userId) {
lockService.lockTable(TableLocks.USER);
AUser aUser = AUser.builder().id(userId).build();
userRepository.save(aUser);
return aUser;

View File

@@ -9,6 +9,8 @@
<changeSet author="Sheldan" id="lock-insertion">
<insert tableName="lock">
<column name="id" value="0"/>
<column name="id" value="1"/>
<column name="id" value="2"/>
</insert>
</changeSet>
</databaseChangeLog>

View File

@@ -11,16 +11,30 @@
<column name="server_id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="allowed_mention_pkey"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE">
<constraints nullable="true"/>
</column>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="everyone_mention" type="BOOLEAN"/>
<column name="user_mention" type="BOOLEAN"/>
<column name="role_mention" type="BOOLEAN"/>
<column name="everyone_mention" type="BOOLEAN">
<constraints nullable="true"/>
</column>
<column name="user_mention" type="BOOLEAN">
<constraints nullable="true"/>
</column>
<column name="role_mention" type="BOOLEAN">
<constraints nullable="true"/>
</column>
</createTable>
</changeSet>
<changeSet author="Sheldan" id="allowed_mention-fk_allowed_mention_server">
<addForeignKeyConstraint baseColumnNames="server_id" baseTableName="allowed_mention" constraintName="fk_allowed_mention_server"
deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
<sql>
DROP TRIGGER IF EXISTS allowed_mention_update_trigger ON allowed_mention;
CREATE TRIGGER allowed_mention_update_trigger BEFORE UPDATE ON allowed_mention FOR EACH ROW EXECUTE PROCEDURE update_trigger_procedure();
</sql>
<sql>
DROP TRIGGER IF EXISTS allowed_mention_insert_trigger ON allowed_mention;
CREATE TRIGGER allowed_mention_insert_trigger BEFORE INSERT ON allowed_mention FOR EACH ROW EXECUTE PROCEDURE insert_trigger_procedure();
</sql>
</changeSet>
</databaseChangeLog>

View File

@@ -11,30 +11,54 @@
<column name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="users_pkey"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE">
<constraints nullable="true"/>
</column>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
</createTable>
<sql>
DROP TRIGGER IF EXISTS auser_update_trigger ON auser;
CREATE TRIGGER auser_update_trigger BEFORE UPDATE ON auser FOR EACH ROW EXECUTE PROCEDURE update_trigger_procedure();
</sql>
<sql>
DROP TRIGGER IF EXISTS auser_insert_trigger ON auser;
CREATE TRIGGER auser_insert_trigger BEFORE INSERT ON auser FOR EACH ROW EXECUTE PROCEDURE insert_trigger_procedure();
</sql>
</changeSet>
<changeSet author="Sheldan" id="user_in_server-table">
<createTable tableName="user_in_server">
<column autoIncrement="true" name="user_in_server_id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="user_in_server_pkey"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE">
<constraints nullable="true"/>
</column>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="server_reference" type="BIGINT">
<column name="server_id" type="BIGINT">
<constraints nullable="false"/>
</column>
<column name="user_reference" type="BIGINT">
<column name="user_id" type="BIGINT">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet author="Sheldan" id="user_in_server-fk_auser_user">
<addForeignKeyConstraint baseColumnNames="user_reference" baseTableName="user_in_server" constraintName="fk_auser_user" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="auser" validate="true"/>
<addUniqueConstraint columnNames="user_id, server_id"
constraintName="uc_user_in_server"
disabled="false"
tableName="user_in_server"/>
<addForeignKeyConstraint baseColumnNames="user_id" baseTableName="user_in_server" constraintName="fk_auser_user" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="auser" validate="true"/>
<addForeignKeyConstraint baseColumnNames="server_id" baseTableName="user_in_server" constraintName="fk_user_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
<createIndex indexName="idx_user_in_server" tableName="user_in_server">
<column name="server_id"/>
<column name="user_id"/>
</createIndex>
<sql>
DROP TRIGGER IF EXISTS user_in_server_update_trigger ON user_in_server;
CREATE TRIGGER user_in_server_update_trigger BEFORE UPDATE ON user_in_server FOR EACH ROW EXECUTE PROCEDURE update_trigger_procedure();
</sql>
<sql>
DROP TRIGGER IF EXISTS user_in_server_insert_trigger ON user_in_server;
CREATE TRIGGER user_in_server_insert_trigger BEFORE INSERT ON user_in_server FOR EACH ROW EXECUTE PROCEDURE insert_trigger_procedure();
</sql>
</changeSet>
<changeSet author="Sheldan" id="user_in_server-fk_user_server">
<addForeignKeyConstraint baseColumnNames="server_reference" baseTableName="user_in_server" constraintName="fk_user_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
</changeSet>
</databaseChangeLog>

View File

@@ -11,15 +11,31 @@
<column name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="channel_pkey"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="deleted" type="BOOLEAN"/>
<column name="type" type="VARCHAR(255)"/>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE">
<constraints nullable="true"/>
</column>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="deleted" type="BOOLEAN">
<constraints nullable="true"/>
</column>
<column name="type" type="VARCHAR(255)">
<constraints nullable="true"/>
</column>
<column name="server_id" type="BIGINT">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet author="Sheldan" id="channel-fk_channel_server">
<addForeignKeyConstraint baseColumnNames="server_id" baseTableName="channel" constraintName="fk_channel_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
<sql>
DROP TRIGGER IF EXISTS channel_update_trigger ON channel;
CREATE TRIGGER channel_update_trigger BEFORE UPDATE ON channel FOR EACH ROW EXECUTE PROCEDURE update_trigger_procedure();
</sql>
<sql>
DROP TRIGGER IF EXISTS channel_insert_trigger ON channel;
CREATE TRIGGER channel_insert_trigger BEFORE INSERT ON channel FOR EACH ROW EXECUTE PROCEDURE insert_trigger_procedure();
</sql>
<sql>
ALTER TABLE channel ADD CONSTRAINT check_channel_type CHECK (type IN ('TEXT', 'DM', 'VOICE', 'NEWS', 'CATEGORY', 'UNKNOWN'));
</sql>
</changeSet>
</databaseChangeLog>

View File

@@ -11,20 +11,37 @@
<column autoIncrement="true" name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="channel_group_pkey"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="group_name" type="VARCHAR(255)"/>
<column name="group_type_id" type="BIGINT"/>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE">
<constraints nullable="true"/>
</column>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="group_name" type="VARCHAR(255)">
<constraints nullable="true"/>
</column>
<column name="group_type_id" type="BIGINT">
<constraints nullable="true"/>
</column>
<column name="server_id" type="BIGINT">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet author="Sheldan" id="channel_group-fk_channel_group_channel_group_type">
<createIndex indexName="idx_channel_group_name_server" tableName="channel_group">
<column name="group_name"/>
<column name="server_id"/>
</createIndex>
<createIndex indexName="idx_channel_group_server" tableName="channel_group">
<column name="server_id"/>
</createIndex>
<addForeignKeyConstraint baseColumnNames="group_type_id" baseTableName="channel_group" constraintName="fk_channel_group_channel_group_type" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="channel_group_type" validate="true"/>
</changeSet>
<changeSet author="Sheldan" id="channel_group-fk_channel_group_server">
<addForeignKeyConstraint baseColumnNames="server_id" baseTableName="channel_group" constraintName="fk_channel_group_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
<sql>
DROP TRIGGER IF EXISTS channel_group_update_trigger ON channel_group;
CREATE TRIGGER channel_group_update_trigger BEFORE UPDATE ON channel_group FOR EACH ROW EXECUTE PROCEDURE update_trigger_procedure();
</sql>
<sql>
DROP TRIGGER IF EXISTS channel_group_insert_trigger ON channel_group;
CREATE TRIGGER channel_group_insert_trigger BEFORE INSERT ON channel_group FOR EACH ROW EXECUTE PROCEDURE insert_trigger_procedure();
</sql>
</changeSet>
<changeSet author="Sheldan" id="channel_in_group-table">
<createTable tableName="channel_in_group">
@@ -35,6 +52,8 @@
<constraints nullable="false"/>
</column>
</createTable>
<addForeignKeyConstraint baseColumnNames="channel_id" baseTableName="channel_in_group" constraintName="fk_channel_in_group_channel" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="channel" validate="true"/>
<addForeignKeyConstraint baseColumnNames="group_id" baseTableName="channel_in_group" constraintName="fk_channel_in_group_group" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="channel_group" validate="true"/>
</changeSet>
<changeSet author="Sheldan" id="channel_group_command-table">
<createTable tableName="channel_group_command">
@@ -42,6 +61,8 @@
<constraints nullable="false" primaryKey="true" primaryKeyName="channel_group_command_pkey"/>
</column>
<column name="enabled" type="BOOLEAN"/>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="command_id" type="BIGINT">
<constraints nullable="false"/>
</column>
@@ -49,17 +70,15 @@
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet author="Sheldan" id="channel_in_group-fk_channel_in_group_channel">
<addForeignKeyConstraint baseColumnNames="channel_id" baseTableName="channel_in_group" constraintName="fk_channel_in_group_channel" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="channel" validate="true"/>
</changeSet>
<changeSet author="Sheldan" id="channel_group_command-fk_channel_group_command_channel_group">
<addForeignKeyConstraint baseColumnNames="group_id" baseTableName="channel_group_command" constraintName="fk_channel_group_command_channel_group" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="channel_group" validate="true"/>
</changeSet>
<changeSet author="Sheldan" id="channel_in_group-fk_channel_in_group_group">
<addForeignKeyConstraint baseColumnNames="group_id" baseTableName="channel_in_group" constraintName="fk_channel_in_group_group" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="channel_group" validate="true"/>
</changeSet>
<changeSet author="Sheldan" id="channel_group_command-fk_channel_group_command_command">
<addForeignKeyConstraint baseColumnNames="command_id" baseTableName="channel_group_command" constraintName="fk_channel_group_command_command" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="command" validate="true"/>
<sql>
DROP TRIGGER IF EXISTS channel_group_command_update_trigger ON channel_group_command;
CREATE TRIGGER channel_group_command_update_trigger BEFORE UPDATE ON channel_group_command FOR EACH ROW EXECUTE PROCEDURE update_trigger_procedure();
</sql>
<sql>
DROP TRIGGER IF EXISTS channel_group_command_insert_trigger ON channel_group_command;
CREATE TRIGGER channel_group_command_insert_trigger BEFORE INSERT ON channel_group_command FOR EACH ROW EXECUTE PROCEDURE insert_trigger_procedure();
</sql>
</changeSet>
</databaseChangeLog>

View File

@@ -11,7 +11,22 @@
<column autoIncrement="true" name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="channel_group_type_pkey"/>
</column>
<column name="group_type_key" type="VARCHAR(255)"/>
<column name="group_type_key" type="VARCHAR(255)">
<constraints nullable="true"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE">
<constraints nullable="true"/>
</column>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
</createTable>
<sql>
DROP TRIGGER IF EXISTS channel_group_type_update_trigger ON channel_group_type;
CREATE TRIGGER channel_group_type_update_trigger BEFORE UPDATE ON channel_group_type FOR EACH ROW EXECUTE PROCEDURE update_trigger_procedure();
</sql>
<sql>
DROP TRIGGER IF EXISTS channel_group_type_insert_trigger ON channel_group_type;
CREATE TRIGGER channel_group_type_insert_trigger BEFORE INSERT ON channel_group_type FOR EACH ROW EXECUTE PROCEDURE insert_trigger_procedure();
</sql>
</changeSet>
</databaseChangeLog>

View File

@@ -11,8 +11,12 @@
<column autoIncrement="true" name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="command_pkey"/>
</column>
<column name="name" type="VARCHAR(255)"/>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="name" type="VARCHAR(255)">
<constraints nullable="true"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE">
<constraints nullable="true"/>
</column>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="feature_id" type="BIGINT">
<constraints nullable="false"/>
@@ -21,6 +25,16 @@
<constraints nullable="false"/>
</column>
</createTable>
<addForeignKeyConstraint baseColumnNames="feature_id" baseTableName="command" constraintName="fk_command_feature" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="feature" validate="true"/>
<addForeignKeyConstraint baseColumnNames="module_id" baseTableName="command" constraintName="fk_command_module" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="module" validate="true"/>
<sql>
DROP TRIGGER IF EXISTS command_update_trigger ON command;
CREATE TRIGGER command_update_trigger BEFORE UPDATE ON command FOR EACH ROW EXECUTE PROCEDURE update_trigger_procedure();
</sql>
<sql>
DROP TRIGGER IF EXISTS command_insert_trigger ON command;
CREATE TRIGGER command_insert_trigger BEFORE INSERT ON command FOR EACH ROW EXECUTE PROCEDURE insert_trigger_procedure();
</sql>
</changeSet>
<changeSet author="Sheldan" id="command_in_server-table">
<createTable tableName="command_in_server">
@@ -28,13 +42,29 @@
<constraints nullable="false" primaryKey="true" primaryKeyName="command_in_server_pkey"/>
</column>
<column name="restricted" type="BOOLEAN"/>
<column name="command_reference" type="BIGINT">
<column name="command_id" type="BIGINT">
<constraints nullable="false"/>
</column>
<column name="server_reference" type="BIGINT">
<column name="server_id" type="BIGINT">
<constraints nullable="false"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
</createTable>
<createIndex indexName="idx_command_in_server" tableName="command_in_server">
<column name="server_id"/>
<column name="command_id"/>
</createIndex>
<addForeignKeyConstraint baseColumnNames="command_id" baseTableName="command_in_server" constraintName="fk_command_command" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="command" validate="true"/>
<addForeignKeyConstraint baseColumnNames="server_id" baseTableName="command_in_server" constraintName="fk_command_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
<sql>
DROP TRIGGER IF EXISTS command_in_server_update_trigger ON command_in_server;
CREATE TRIGGER command_in_server_update_trigger BEFORE UPDATE ON command_in_server FOR EACH ROW EXECUTE PROCEDURE update_trigger_procedure();
</sql>
<sql>
DROP TRIGGER IF EXISTS command_in_server_insert_trigger ON command_in_server;
CREATE TRIGGER command_in_server_insert_trigger BEFORE INSERT ON command_in_server FOR EACH ROW EXECUTE PROCEDURE insert_trigger_procedure();
</sql>
</changeSet>
<changeSet author="Sheldan" id="command_in_server_immune_roles-table">
<createTable tableName="command_in_server_immune_roles">
@@ -45,6 +75,9 @@
<constraints nullable="false"/>
</column>
</createTable>
<addForeignKeyConstraint baseColumnNames="command_in_server_command_in_server_id" baseTableName="command_in_server_immune_roles" constraintName="fk_command_immune_role" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="command_in_server_id" referencedTableName="command_in_server" validate="true"/>
<addForeignKeyConstraint baseColumnNames="immune_roles_id" baseTableName="command_in_server_immune_roles" constraintName="fk_immune_role_role" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="role" validate="true"/>
</changeSet>
<changeSet author="Sheldan" id="command_in_server_allowed_roles-table">
<createTable tableName="command_in_server_allowed_roles">
@@ -55,29 +88,32 @@
<constraints nullable="false"/>
</column>
</createTable>
<addForeignKeyConstraint baseColumnNames="command_in_server_command_in_server_id" baseTableName="command_in_server_allowed_roles" constraintName="fk_command_allowed_role" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="command_in_server_id" referencedTableName="command_in_server" validate="true"/>
<addForeignKeyConstraint baseColumnNames="allowed_roles_id" baseTableName="command_in_server_allowed_roles" constraintName="fk_role_allowed_role" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="role" validate="true"/>
</changeSet>
<changeSet author="Sheldan" id="command-fk_command_feature">
<addForeignKeyConstraint baseColumnNames="feature_id" baseTableName="command" constraintName="fk_command_feature" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="feature" validate="true"/>
</changeSet>
</changeSet>
<changeSet author="Sheldan" id="command_in_server-command_in_server_immune_roles">
<addForeignKeyConstraint baseColumnNames="command_in_server_command_in_server_id" baseTableName="command_in_server_immune_roles" constraintName="fk_command_immune_role" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="command_in_server_id" referencedTableName="command_in_server" validate="true"/>
</changeSet>
</changeSet>
<changeSet author="Sheldan" id="command_in_server-command_in_server_allowed_roles">
<addForeignKeyConstraint baseColumnNames="command_in_server_command_in_server_id" baseTableName="command_in_server_allowed_roles" constraintName="fk_command_allowed_role" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="command_in_server_id" referencedTableName="command_in_server" validate="true"/>
</changeSet>
</changeSet>
<changeSet author="Sheldan" id="command_in_server_immune_roles-command_in_server_allowed_roles">
<addForeignKeyConstraint baseColumnNames="allowed_roles_id" baseTableName="command_in_server_allowed_roles" constraintName="fk_role_allowed_role" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="role" validate="true"/>
</changeSet>
</changeSet>
<changeSet author="Sheldan" id="command-fk_command_module">
<addForeignKeyConstraint baseColumnNames="module_id" baseTableName="command" constraintName="fk_command_module" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="module" validate="true"/>
</changeSet>
</changeSet>
<changeSet author="Sheldan" id="command_in_server-fk_command_command">
<addForeignKeyConstraint baseColumnNames="command_reference" baseTableName="command_in_server" constraintName="fk_command_command" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="command" validate="true"/>
</changeSet>
</changeSet>
<changeSet author="Sheldan" id="command_in_server_allowed_roles-fk_immune_role_role">
<addForeignKeyConstraint baseColumnNames="immune_roles_id" baseTableName="command_in_server_immune_roles" constraintName="fk_immune_role_role" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="role" validate="true"/>
</changeSet>
</changeSet>
<changeSet author="Sheldan" id="command_in_server-fk_command_server">
<addForeignKeyConstraint baseColumnNames="server_reference" baseTableName="command_in_server" constraintName="fk_command_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
</changeSet>
<changeSet author="Sheldan" id="command_triggers">
</changeSet>
<changeSet author="Sheldan" id="command_in_server_triggers">
</changeSet>
</databaseChangeLog>

View File

@@ -22,8 +22,7 @@
columnNames="counter_key, server_id"
constraintName="pk_counter"
tableName="counter"/>
</changeSet>
<changeSet author="Sheldan" id="counter-counter_server">
<addForeignKeyConstraint baseColumnNames="server_id" baseTableName="counter" constraintName="fk_counter_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
</changeSet>
</databaseChangeLog>

View File

@@ -11,12 +11,25 @@
<column autoIncrement="true" name="id" type="INTEGER">
<constraints nullable="false" primaryKey="true" primaryKeyName="default_config_pkey"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="double_value" type="FLOAT8"/>
<column name="long_value" type="BIGINT"/>
<column name="name" type="VARCHAR(255)"/>
<column name="name" type="VARCHAR(255)">
<constraints nullable="true"/>
</column>
<column name="string_value" type="VARCHAR(255)"/>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE">
<constraints nullable="true"/>
</column>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
</createTable>
<sql>
DROP TRIGGER IF EXISTS default_config_update_trigger ON default_config;
CREATE TRIGGER default_config_update_trigger BEFORE UPDATE ON default_config FOR EACH ROW EXECUTE PROCEDURE update_trigger_procedure();
</sql>
<sql>
DROP TRIGGER IF EXISTS default_config_insert_trigger ON default_config;
CREATE TRIGGER default_config_insert_trigger BEFORE INSERT ON default_config FOR EACH ROW EXECUTE PROCEDURE insert_trigger_procedure();
</sql>
</changeSet>
</databaseChangeLog>

View File

@@ -11,10 +11,20 @@
<column autoIncrement="true" name="id" type="INTEGER">
<constraints nullable="false" primaryKey="true" primaryKeyName="default_emote_pkey"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE">
<constraints nullable="true"/>
</column>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="emote_key" type="VARCHAR(255)"/>
<column name="name" type="VARCHAR(255)"/>
</createTable>
<sql>
DROP TRIGGER IF EXISTS default_emote_update_trigger ON default_emote;
CREATE TRIGGER default_emote_update_trigger BEFORE UPDATE ON default_emote FOR EACH ROW EXECUTE PROCEDURE update_trigger_procedure();
</sql>
<sql>
DROP TRIGGER IF EXISTS default_emote_insert_trigger ON default_emote;
CREATE TRIGGER default_emote_insert_trigger BEFORE INSERT ON default_emote FOR EACH ROW EXECUTE PROCEDURE insert_trigger_procedure();
</sql>
</changeSet>
</databaseChangeLog>

View File

@@ -11,17 +11,25 @@
<column autoIncrement="true" name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="default_feature_flag_pkey"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE">
<constraints nullable="true"/>
</column>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="enabled" type="BOOLEAN">
<constraints nullable="false"/>
</column>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="feature_id" type="BIGINT">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet author="Sheldan" id="default_feature_flag-fk_default_feature_flag_feature">
<addForeignKeyConstraint baseColumnNames="feature_id" baseTableName="default_feature_flag" constraintName="fk_default_feature_flag_feature" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="feature" validate="true"/>
<sql>
DROP TRIGGER IF EXISTS default_feature_flag_update_trigger ON default_feature_flag;
CREATE TRIGGER default_feature_flag_update_trigger BEFORE UPDATE ON default_feature_flag FOR EACH ROW EXECUTE PROCEDURE update_trigger_procedure();
</sql>
<sql>
DROP TRIGGER IF EXISTS default_feature_flag_insert_trigger ON default_feature_flag;
CREATE TRIGGER default_feature_flag_insert_trigger BEFORE INSERT ON default_feature_flag FOR EACH ROW EXECUTE PROCEDURE insert_trigger_procedure();
</sql>
</changeSet>
</databaseChangeLog>

View File

@@ -11,18 +11,29 @@
<column autoIncrement="true" name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="default_feature_mode_pkey"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="mode" type="VARCHAR(255)"/>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE">
<constraints nullable="true"/>
</column>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="mode" type="VARCHAR(255)">
<constraints nullable="true"/>
</column>
<column name="enabled" type="BOOLEAN">
<constraints nullable="false"/>
</column>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="feature_id" type="BIGINT">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet author="Sheldan" id="default_feature_flag-fk_default_feature_mode_feature">
<addForeignKeyConstraint baseColumnNames="feature_id" baseTableName="default_feature_mode" constraintName="fk_default_feature_mode_feature" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="feature" validate="true"/>
<sql>
DROP TRIGGER IF EXISTS default_feature_mode_update_trigger ON default_feature_mode;
CREATE TRIGGER default_feature_mode_update_trigger BEFORE UPDATE ON default_feature_mode FOR EACH ROW EXECUTE PROCEDURE update_trigger_procedure();
</sql>
<sql>
DROP TRIGGER IF EXISTS default_feature_mode_insert_trigger ON default_feature_mode;
CREATE TRIGGER default_feature_mode_insert_trigger BEFORE INSERT ON default_feature_mode FOR EACH ROW EXECUTE PROCEDURE insert_trigger_procedure();
</sql>
</changeSet>
</databaseChangeLog>

View File

@@ -11,9 +11,22 @@
<column autoIncrement="true" name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="default_posttarget_pkey"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="name" type="VARCHAR(255)"/>
<column name="name" type="VARCHAR(255)">
<constraints nullable="true"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE">
<constraints nullable="true"/>
</column>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
</createTable>
<sql>
DROP TRIGGER IF EXISTS default_posttarget_update_trigger ON default_posttarget;
CREATE TRIGGER default_posttarget_update_trigger BEFORE UPDATE ON default_posttarget FOR EACH ROW EXECUTE PROCEDURE update_trigger_procedure();
</sql>
<sql>
DROP TRIGGER IF EXISTS default_posttarget_insert_trigger ON default_posttarget;
CREATE TRIGGER default_posttarget_insert_trigger BEFORE INSERT ON default_posttarget FOR EACH ROW EXECUTE PROCEDURE insert_trigger_procedure();
</sql>
</changeSet>
</databaseChangeLog>

View File

@@ -12,19 +12,38 @@
<constraints nullable="false" primaryKey="true" primaryKeyName="emote_pkey"/>
</column>
<column name="animated" type="BOOLEAN"/>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="custom" type="BOOLEAN"/>
<column name="changeable" type="BOOLEAN"/>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE">
<constraints nullable="true"/>
</column>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="custom" type="BOOLEAN">
<constraints nullable="true"/>
</column>
<column name="changeable" type="BOOLEAN">
<constraints nullable="true"/>
</column>
<column name="emote_id" type="BIGINT"/>
<column name="emote_key" type="VARCHAR(255)"/>
<column name="name" type="VARCHAR(255)"/>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="emote_server_id" type="BIGINT">
<column name="server_id" type="BIGINT">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet author="Sheldan" id="emote-fk_emote_server">
<addForeignKeyConstraint baseColumnNames="emote_server_id" baseTableName="emote" constraintName="fk_emote_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
<createIndex indexName="idx_emote_name_server_id" tableName="emote">
<column name="name"/>
<column name="server_id"/>
</createIndex>
<createIndex indexName="idx_emote_emote_id" tableName="emote">
<column name="emote_id"/>
</createIndex>
<addForeignKeyConstraint baseColumnNames="server_id" baseTableName="emote" constraintName="fk_emote_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
<sql>
DROP TRIGGER IF EXISTS emote_update_trigger ON emote;
CREATE TRIGGER emote_update_trigger BEFORE UPDATE ON emote FOR EACH ROW EXECUTE PROCEDURE update_trigger_procedure();
</sql>
<sql>
DROP TRIGGER IF EXISTS emote_insert_trigger ON emote;
CREATE TRIGGER emote_insert_trigger BEFORE INSERT ON emote FOR EACH ROW EXECUTE PROCEDURE insert_trigger_procedure();
</sql>
</changeSet>
</databaseChangeLog>

View File

@@ -11,9 +11,24 @@
<column autoIncrement="true" name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="feature_pkey"/>
</column>
<column name="key" type="VARCHAR(255)"/>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="key" type="VARCHAR(255)">
<constraints nullable="true"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE">
<constraints nullable="true"/>
</column>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
</createTable>
<createIndex indexName="idx_feature_key" tableName="feature">
<column name="key"/>
</createIndex>
<sql>
DROP TRIGGER IF EXISTS feature_update_trigger ON feature;
CREATE TRIGGER feature_update_trigger BEFORE UPDATE ON feature FOR EACH ROW EXECUTE PROCEDURE update_trigger_procedure();
</sql>
<sql>
DROP TRIGGER IF EXISTS feature_insert_trigger ON feature;
CREATE TRIGGER feature_insert_trigger BEFORE INSERT ON feature FOR EACH ROW EXECUTE PROCEDURE insert_trigger_procedure();
</sql>
</changeSet>
</databaseChangeLog>

View File

@@ -11,7 +11,9 @@
<column autoIncrement="true" name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="feature_flag_pkey"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE">
<constraints nullable="true"/>
</column>
<column name="enabled" type="BOOLEAN">
<constraints nullable="false"/>
</column>
@@ -23,11 +25,15 @@
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet author="Sheldan" id="feature_flag-fk_feature_flag_feature">
<addForeignKeyConstraint baseColumnNames="feature_id" baseTableName="feature_flag" constraintName="fk_feature_flag_feature" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="feature" validate="true"/>
</changeSet>
<changeSet author="Sheldan" id="feature_flag-fk_feature_flag_server">
<addForeignKeyConstraint baseColumnNames="server_id" baseTableName="feature_flag" constraintName="fk_feature_flag_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
<sql>
DROP TRIGGER IF EXISTS feature_flag_update_trigger ON feature_flag;
CREATE TRIGGER feature_flag_update_trigger BEFORE UPDATE ON feature_flag FOR EACH ROW EXECUTE PROCEDURE update_trigger_procedure();
</sql>
<sql>
DROP TRIGGER IF EXISTS feature_flag_insert_trigger ON feature_flag;
CREATE TRIGGER feature_flag_insert_trigger BEFORE INSERT ON feature_flag FOR EACH ROW EXECUTE PROCEDURE insert_trigger_procedure();
</sql>
</changeSet>
</databaseChangeLog>

View File

@@ -11,11 +11,13 @@
<column autoIncrement="true" name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="feature_mode_pkey"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE">
<constraints nullable="true"/>
</column>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="enabled" type="BOOLEAN">
<constraints nullable="false"/>
</column>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="feature_mode_id" type="BIGINT">
<constraints nullable="false"/>
</column>
@@ -26,14 +28,24 @@
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet author="Sheldan" id="feature_mode-fk_feature_mode_flag">
<createIndex indexName="idx_feature_mode_server" tableName="feature_mode">
<column name="server_id"/>
</createIndex>
<createIndex indexName="idx_feature_mode_flag_server_mode" tableName="feature_mode">
<column name="server_id"/>
<column name="feature_flag_id"/>
<column name="feature_mode_id"/>
</createIndex>
<addForeignKeyConstraint baseColumnNames="feature_flag_id" baseTableName="feature_mode" constraintName="fk_feature_mode_flag" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="feature_flag" validate="true"/>
</changeSet>
<changeSet author="Sheldan" id="feature_mode-fk_feature_mode_mode">
<addForeignKeyConstraint baseColumnNames="feature_mode_id" baseTableName="feature_mode" constraintName="fk_feature_mode_mode" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="default_feature_mode" validate="true"/>
</changeSet>
<changeSet author="Sheldan" id="feature_mode-fk_feature_mode_server">
<addForeignKeyConstraint baseColumnNames="server_id" baseTableName="feature_mode" constraintName="fk_feature_mode_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
<sql>
DROP TRIGGER IF EXISTS feature_mode_update_trigger ON feature_mode;
CREATE TRIGGER feature_mode_update_trigger BEFORE UPDATE ON feature_mode FOR EACH ROW EXECUTE PROCEDURE update_trigger_procedure();
</sql>
<sql>
DROP TRIGGER IF EXISTS feature_mode_insert_trigger ON feature_mode;
CREATE TRIGGER feature_mode_insert_trigger BEFORE INSERT ON feature_mode FOR EACH ROW EXECUTE PROCEDURE insert_trigger_procedure();
</sql>
</changeSet>
</databaseChangeLog>

View File

@@ -11,9 +11,21 @@
<column autoIncrement="true" name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="module_pkey"/>
</column>
<column name="name" type="VARCHAR(255)"/>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="name" type="VARCHAR(255)">
<constraints nullable="true"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE">
<constraints nullable="true"/>
</column>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
</createTable>
<sql>
DROP TRIGGER IF EXISTS module_update_trigger ON module;
CREATE TRIGGER module_update_trigger BEFORE UPDATE ON module FOR EACH ROW EXECUTE PROCEDURE update_trigger_procedure();
</sql>
<sql>
DROP TRIGGER IF EXISTS module_insert_trigger ON module;
CREATE TRIGGER module_insert_trigger BEFORE INSERT ON module FOR EACH ROW EXECUTE PROCEDURE insert_trigger_procedure();
</sql>
</changeSet>
</databaseChangeLog>

View File

@@ -11,9 +11,13 @@
<column autoIncrement="true" name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="posttarget_pkey"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="name" type="VARCHAR(255)"/>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE">
<constraints nullable="true"/>
</column>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="name" type="VARCHAR(255)">
<constraints nullable="true"/>
</column>
<column name="channel_id" type="BIGINT">
<constraints nullable="false"/>
</column>
@@ -21,11 +25,20 @@
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet author="Sheldan" id="posttarget-fk_posttarget_channel">
<createIndex indexName="idx_posttarget_name_server" tableName="posttarget">
<column name="name"/>
<column name="server_id"/>
</createIndex>
<addForeignKeyConstraint baseColumnNames="channel_id" baseTableName="posttarget" constraintName="fk_posttarget_channel" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="channel" validate="true"/>
</changeSet>
<changeSet author="Sheldan" id="posttarget-fk_posttarget_server">
<addForeignKeyConstraint baseColumnNames="server_id" baseTableName="posttarget" constraintName="fk_posttarget_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
<sql>
DROP TRIGGER IF EXISTS posttarget_update_trigger ON posttarget;
CREATE TRIGGER posttarget_update_trigger BEFORE UPDATE ON posttarget FOR EACH ROW EXECUTE PROCEDURE update_trigger_procedure();
</sql>
<sql>
DROP TRIGGER IF EXISTS posttarget_insert_trigger ON posttarget;
CREATE TRIGGER posttarget_insert_trigger BEFORE INSERT ON posttarget FOR EACH ROW EXECUTE PROCEDURE insert_trigger_procedure();
</sql>
</changeSet>
</databaseChangeLog>

View File

@@ -11,15 +11,25 @@
<column name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="role_pkey"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="deleted" type="BOOLEAN"/>
<column name="deleted" type="BOOLEAN">
<constraints nullable="true"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE">
<constraints nullable="true"/>
</column>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="role_server_id" type="BIGINT">
<column name="server_id" type="BIGINT">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet author="Sheldan" id="role-fk_role_server">
<addForeignKeyConstraint baseColumnNames="role_server_id" baseTableName="role" constraintName="fk_role_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
<addForeignKeyConstraint baseColumnNames="server_id" baseTableName="role" constraintName="fk_role_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
<sql>
DROP TRIGGER IF EXISTS role_update_trigger ON role;
CREATE TRIGGER role_update_trigger BEFORE UPDATE ON role FOR EACH ROW EXECUTE PROCEDURE update_trigger_procedure();
</sql>
<sql>
DROP TRIGGER IF EXISTS role_insert_trigger ON role;
CREATE TRIGGER role_insert_trigger BEFORE INSERT ON role FOR EACH ROW EXECUTE PROCEDURE insert_trigger_procedure();
</sql>
</changeSet>
</databaseChangeLog>

View File

@@ -11,8 +11,19 @@
<column name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="server_pkey"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE">
<constraints nullable="true"/>
</column>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
</createTable>
<sql>
DROP TRIGGER IF EXISTS server_update_trigger ON server;
CREATE TRIGGER server_update_trigger BEFORE UPDATE ON server FOR EACH ROW EXECUTE PROCEDURE update_trigger_procedure();
</sql>
<sql>
DROP TRIGGER IF EXISTS server_insert_trigger ON server;
CREATE TRIGGER server_insert_trigger BEFORE INSERT ON server FOR EACH ROW EXECUTE PROCEDURE insert_trigger_procedure();
</sql>
</changeSet>
</databaseChangeLog>

View File

@@ -0,0 +1,8 @@
CREATE OR REPLACE FUNCTION insert_trigger_procedure() RETURNS trigger
LANGUAGE plpgsql
AS $$
BEGIN
NEW.created := CURRENT_TIMESTAMP;
RETURN NEW;
END;
$$;

View File

@@ -0,0 +1,8 @@
CREATE OR REPLACE FUNCTION update_trigger_procedure() RETURNS trigger
LANGUAGE plpgsql
AS $$
BEGIN
NEW.updated := CURRENT_TIMESTAMP;
RETURN NEW;
END;
$$;

View File

@@ -11,18 +11,32 @@
<column autoIncrement="true" name="id" type="INTEGER">
<constraints nullable="false" primaryKey="true" primaryKeyName="system_config_pkey"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE">
<constraints nullable="true"/>
</column>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="double_value" type="FLOAT8"/>
<column name="long_value" type="BIGINT"/>
<column name="name" type="VARCHAR(255)"/>
<column name="name" type="VARCHAR(255)">
<constraints nullable="true"/>
</column>
<column name="string_value" type="VARCHAR(255)"/>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="server_id" type="BIGINT">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet author="Sheldan" id="system_config-fk_config_server">
<createIndex indexName="idx_system_config_name_server" tableName="system_config">
<column name="name"/>
<column name="server_id"/>
</createIndex>
<addForeignKeyConstraint baseColumnNames="server_id" baseTableName="system_config" constraintName="fk_config_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
<sql>
DROP TRIGGER IF EXISTS system_config_update_trigger ON system_config;
CREATE TRIGGER system_config_update_trigger BEFORE UPDATE ON system_config FOR EACH ROW EXECUTE PROCEDURE update_trigger_procedure();
</sql>
<sql>
DROP TRIGGER IF EXISTS system_config_insert_trigger ON system_config;
CREATE TRIGGER system_config_insert_trigger BEFORE INSERT ON system_config FOR EACH ROW EXECUTE PROCEDURE insert_trigger_procedure();
</sql>
</changeSet>
</databaseChangeLog>

View File

@@ -6,6 +6,7 @@
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/pro ../../dbchangelog-3.8.xsd" >
<include file="trigger_functions.xml" relativeToChangelogFile="true"/>
<include file="server.xml" relativeToChangelogFile="true"/>
<include file="channel.xml" relativeToChangelogFile="true"/>
<include file="default_post_target.xml" relativeToChangelogFile="true"/>

View File

@@ -0,0 +1,19 @@
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:pro="http://www.liquibase.org/xml/ns/pro"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/pro ../../dbchangelog-3.8.xsd" >
<changeSet author="Sheldan" id="insert_trigger" dbms="postgresql">
<sqlFile encoding="utf8" path="sql/insert_trigger.sql"
relativeToChangelogFile="true"
splitStatements="false"/>
</changeSet>
<changeSet author="Sheldan" id="update_trigger" dbms="postgresql">
<sqlFile encoding="utf8" path="sql/update_trigger.sql"
relativeToChangelogFile="true"
splitStatements="false"/>
</changeSet>
</databaseChangeLog>

View File

@@ -1,5 +1,5 @@
package dev.sheldan.abstracto.core.command.models;
public enum TableLocks {
CHANNELS
CHANNELS, USER_IN_SERVER, USER
}

View File

@@ -40,17 +40,7 @@ public class ACommand implements Serializable {
@Column(name = "created")
private Instant created;
@PrePersist
private void onInsert() {
this.created = Instant.now();
}
@Column(name = "updated")
private Instant updated;
@PreUpdate
private void onUpdate() {
this.updated = Instant.now();
}
}

View File

@@ -7,6 +7,7 @@ import org.hibernate.annotations.CacheConcurrencyStrategy;
import javax.persistence.*;
import java.io.Serializable;
import java.time.Instant;
import java.util.List;
@Entity(name = "command_in_server")
@@ -22,14 +23,15 @@ public class ACommandInAServer implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "command_in_server_id")
private Long commandInServerId;
@OneToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinColumn(name = "commandReference", nullable = false)
@JoinColumn(name = "command_id", nullable = false)
private ACommand commandReference;
@OneToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinColumn(name = "serverReference", nullable = false)
@JoinColumn(name = "server_id", nullable = false)
private AServer serverReference;
@ManyToMany(fetch = FetchType.LAZY)
@@ -46,9 +48,16 @@ public class ACommandInAServer implements Serializable {
@Getter
@Setter
@Column
@Column(name = "restricted")
private Boolean restricted;
@Column(name = "created")
private Instant created;
@Column(name = "updated")
private Instant updated;
}

View File

@@ -38,17 +38,7 @@ public class AModule implements Serializable {
@Column(name = "created")
private Instant created;
@PrePersist
private void onInsert() {
this.created = Instant.now();
}
@Column(name = "updated")
private Instant updated;
@PreUpdate
private void onUpdate() {
this.updated = Instant.now();
}
}

View File

@@ -42,10 +42,8 @@ public class AChannel implements SnowFlake, Serializable {
@Column(name = "created")
private Instant created;
@PrePersist
private void onInsert() {
this.created = Instant.now();
}
@Column(name = "updated")
private Instant updated;
@Getter
@Setter

View File

@@ -23,7 +23,7 @@ public class AChannelGroup implements Serializable {
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column
@Column(name = "group_name")
@Setter
private String groupName;
@@ -40,10 +40,8 @@ public class AChannelGroup implements Serializable {
@Column(name = "created")
private Instant created;
@PrePersist
private void onInsert() {
this.created = Instant.now();
}
@Column(name = "updated")
private Instant updated;
@ManyToMany
@JoinTable(

View File

@@ -6,6 +6,7 @@ import org.hibernate.annotations.CacheConcurrencyStrategy;
import javax.persistence.*;
import java.io.Serializable;
import java.time.Instant;
@Entity
@Table(name = "channel_group_command")
@@ -20,6 +21,7 @@ public class AChannelGroupCommand implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "command_in_group_id")
private Long commandInGroupId;
@OneToOne(fetch = FetchType.LAZY)
@@ -33,6 +35,13 @@ public class AChannelGroupCommand implements Serializable {
private AChannelGroup group;
@Setter
@Column(name = "enabled")
private Boolean enabled;
@Column(name = "created")
private Instant created;
@Column(name = "updated")
private Instant updated;
}

View File

@@ -3,7 +3,7 @@ package dev.sheldan.abstracto.core.models.database;
import net.dv8tion.jda.api.entities.ChannelType;
public enum AChannelType {
TEXT, DM, VOICE, NEWS, CATEGORY, UNKOWN;
TEXT, DM, VOICE, NEWS, CATEGORY, UNKNOWN;
public static AChannelType getAChannelType(ChannelType type) {
switch (type) {
@@ -11,7 +11,7 @@ public enum AChannelType {
case PRIVATE: return AChannelType.DM;
case VOICE: return AChannelType.VOICE;
case CATEGORY: return AChannelType.CATEGORY;
default: return AChannelType.UNKOWN;
default: return AChannelType.UNKNOWN;
}
}
}

View File

@@ -8,7 +8,7 @@ import java.io.Serializable;
import java.time.Instant;
@Entity
@Table(name="systemConfig")
@Table(name="system_config")
@Builder
@AllArgsConstructor
@NoArgsConstructor
@@ -46,19 +46,9 @@ public class AConfig implements Serializable {
@Column(name = "created")
private Instant created;
@PrePersist
private void onInsert() {
this.created = Instant.now();
}
@Column(name = "updated")
private Instant updated;
@PreUpdate
private void onUpdate() {
this.updated = Instant.now();
}
public String getValueAsString() {
if(getLongValue() != null) {
return getLongValue().toString();

View File

@@ -24,34 +24,24 @@ public class ADefaultConfig implements Serializable {
@Column
private String name;
@Column
@Column(name = "string_value")
@Setter
private String stringValue;
@Column
@Column(name = "double_value")
@Setter
private Double doubleValue;
@Column
@Column(name = "long_value")
@Setter
private Long longValue;
@Column(name = "created")
private Instant created;
@PrePersist
private void onInsert() {
this.created = Instant.now();
}
@Column(name = "updated")
private Instant updated;
@PreUpdate
private void onUpdate() {
this.updated = Instant.now();
}
public String getValueAsString() {
if(getLongValue() != null) {
return getLongValue().toString();

View File

@@ -21,48 +21,39 @@ public class AEmote implements Serializable, Fakeable {
@javax.persistence.Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Integer id;
@Column
@Column(name = "name")
private String name;
// the way discord calls them and the unicode char for default Tweemoji emotes
@Column
@Column(name = "emote_key")
@Setter
private String emoteKey;
@Column
@Column(name = "emote_id")
@Setter
private Long emoteId;
@Column
@Column(name = "animated")
@Setter
private Boolean animated;
@Column
@Column(name = "custom")
@Setter
private Boolean custom;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "emote_server_id", nullable = false)
@JoinColumn(name = "server_id", nullable = false)
private AServer serverRef;
@Column(name = "created")
private Instant created;
@PrePersist
private void onInsert() {
this.created = Instant.now();
}
@Column(name = "updated")
private Instant updated;
@PreUpdate
private void onUpdate() {
this.updated = Instant.now();
}
@Column(name = "changeable")
@Getter
@Setter

View File

@@ -28,6 +28,7 @@ public class AFeature implements SnowFlake, Serializable {
@Getter
@Setter
@Column(name = "key")
private String key;
@Getter
@@ -39,18 +40,7 @@ public class AFeature implements SnowFlake, Serializable {
@Column(name = "created")
private Instant created;
@PrePersist
private void onInsert() {
this.created = Instant.now();
}
@Column(name = "updated")
private Instant updated;
@PreUpdate
private void onUpdate() {
this.updated = Instant.now();
}
}

View File

@@ -44,23 +44,13 @@ public class AFeatureFlag implements Serializable {
@Getter
@Setter
@Column(name = "enabled")
private boolean enabled;
@Column(name = "created")
private Instant created;
@PrePersist
private void onInsert() {
this.created = Instant.now();
}
@Column(name = "updated")
private Instant updateTimestamp;
@PreUpdate
private void onUpdate() {
this.updateTimestamp = Instant.now();
}
}

View File

@@ -40,7 +40,7 @@ public class AFeatureMode implements Serializable {
@JoinColumn(name = "server_id", nullable = false)
private AServer server;
@Column
@Column(name = "enabled")
@Getter
@Setter
private Boolean enabled;
@@ -48,17 +48,7 @@ public class AFeatureMode implements Serializable {
@Column(name = "created")
private Instant created;
@PrePersist
private void onInsert() {
this.created = Instant.now();
}
@Column(name = "updated")
private Instant updateTimestamp;
@PreUpdate
private void onUpdate() {
this.updateTimestamp = Instant.now();
}
}

View File

@@ -26,32 +26,23 @@ public class ARole implements SnowFlake, Serializable {
@ManyToOne(fetch = FetchType.LAZY)
@Getter
@Setter
@JoinColumn(name = "role_server_id", nullable = false)
@JoinColumn(name = "server_id", nullable = false)
private AServer server;
@Getter
@Setter
@Column(name = "deleted")
private Boolean deleted;
@Column(name = "created")
private Instant created;
@PrePersist
private void onInsert() {
this.created = Instant.now();
}
@Column(name = "updated")
private Instant updated;
@Transient
private boolean fake;
@PreUpdate
private void onUpdate() {
this.updated = Instant.now();
}
public String getAsMention() {
return "<@&" + getId() + '>';
}

View File

@@ -28,22 +28,12 @@ public class AServer implements SnowFlake, Serializable {
@Column(name = "created")
private Instant created;
@PrePersist
private void onInsert() {
this.created = Instant.now();
}
@Column(name = "updated")
private Instant updated;
@Transient
private boolean fake;
@PreUpdate
private void onUpdate() {
this.updated = Instant.now();
}
@OneToOne(mappedBy = "server", cascade = CascadeType.ALL)
@PrimaryKeyJoinColumn
private AllowedMention allowedMention;

View File

@@ -20,6 +20,7 @@ import java.util.List;
public class AUser implements Serializable {
@Id
@Column(name = "id")
private Long id;
@OneToMany(
@@ -32,17 +33,7 @@ public class AUser implements Serializable {
@Column(name = "created")
private Instant created;
@PrePersist
private void onInsert() {
this.created = Instant.now();
}
@Column(name = "updated")
private Instant updated;
@PreUpdate
private void onUpdate() {
this.updated = Instant.now();
}
}

View File

@@ -25,27 +25,17 @@ public class AUserInAServer implements Serializable {
private Long userInServerId;
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinColumn(name = "userReference", nullable = false)
@JoinColumn(name = "user_id", nullable = false)
private AUser userReference;
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinColumn(name = "serverReference", nullable = false)
@JoinColumn(name = "server_id", nullable = false)
private AServer serverReference;
@Column(name = "created")
private Instant created;
@PrePersist
private void onInsert() {
this.created = Instant.now();
}
@Column(name = "updated")
private Instant updated;
@PreUpdate
private void onUpdate() {
this.updated = Instant.now();
}
}

View File

@@ -44,18 +44,8 @@ public class AllowedMention implements Serializable {
@Column(name = "created")
private Instant created;
@PrePersist
private void onInsert() {
this.created = Instant.now();
}
@Column(name = "updated")
private Instant updateTimestamp;
@PreUpdate
private void onUpdate() {
this.updateTimestamp = Instant.now();
}
private Instant updated;
public boolean allAllowed() {
return everyone && user && role;

View File

@@ -4,6 +4,7 @@ import lombok.*;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import javax.persistence.*;
import java.time.Instant;
@Entity
@Table(name = "channel_group_type")
@@ -24,4 +25,10 @@ public class ChannelGroupType {
@Column(name = "group_type_key")
private String groupTypeKey;
@Column(name = "created")
private Instant created;
@Column(name = "updated")
private Instant updated;
}

View File

@@ -19,31 +19,21 @@ import java.time.Instant;
public class DefaultEmote implements Serializable {
@javax.persistence.Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column
@Column(name = "name")
private String name;
@Column
@Column(name = "emote_key")
@Setter
private String emoteKey;
@Column(name = "created")
private Instant created;
@PrePersist
private void onInsert() {
this.created = Instant.now();
}
@Column(name = "updated")
private Instant updated;
@PreUpdate
private void onUpdate() {
this.updated = Instant.now();
}
}

View File

@@ -31,23 +31,14 @@ public class DefaultFeatureFlag implements Serializable {
@Getter
@Setter
@Column(name = "enabled")
private boolean enabled;
@Column(name = "created")
private Instant created;
@PrePersist
private void onInsert() {
this.created = Instant.now();
}
@Column(name = "updated")
private Instant updateTimestamp;
@PreUpdate
private void onUpdate() {
this.updateTimestamp = Instant.now();
}
private Instant updated;
}

View File

@@ -38,25 +38,18 @@ public class DefaultFeatureMode implements Serializable {
@Getter
@Setter
@Column(name = "enabled")
private boolean enabled;
@Getter
@Setter
@Column(name = "mode")
private String mode;
@Column(name = "created")
private Instant created;
@PrePersist
private void onInsert() {
this.created = Instant.now();
}
@Column(name = "updated")
private Instant updateTimestamp;
private Instant updated;
@PreUpdate
private void onUpdate() {
this.updateTimestamp = Instant.now();
}
}

View File

@@ -20,26 +20,17 @@ public class DefaultPostTarget implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Getter
@Column(name = "id")
private Long id;
@Getter
@Column(name = "name")
private String name;
@Column(name = "created")
private Instant created;
@PrePersist
private void onInsert() {
this.created = Instant.now();
}
@Column(name = "updated")
private Instant updated;
@PreUpdate
private void onUpdate() {
this.updated = Instant.now();
}
}

View File

@@ -20,9 +20,11 @@ public class PostTarget implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Getter
@Column(name = "id")
private Long id;
@Getter
@Column(name = "name")
private String name;
@OneToOne(fetch = FetchType.LAZY)
@@ -38,18 +40,7 @@ public class PostTarget implements Serializable {
@Column(name = "created")
private Instant created;
@PrePersist
private void onInsert() {
this.created = Instant.now();
}
@Column(name = "updated")
private Instant updated;
@PreUpdate
private void onUpdate() {
this.updated = Instant.now();
}
}