[AB-263] adding stricter not null checks to database, disabling updates/inserts for created and updated columns to only rely on triggers

This commit is contained in:
Sheldan
2021-05-23 14:17:03 +02:00
parent 04a7cfafd7
commit 13a6e1fdca
145 changed files with 1204 additions and 350 deletions

View File

@@ -11,24 +11,20 @@
<column name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="mod_mail_message_pkey"/>
</column>
<column name="created_message_in_dm" type="BIGINT" >
<constraints nullable="true"/>
</column>
<column name="created_message_in_channel" type="BIGINT" >
<constraints nullable="true"/>
</column>
<column name="created_message_in_dm" type="BIGINT" />
<column name="created_message_in_channel" type="BIGINT" />
<column name="server_id" type="BIGINT">
<constraints nullable="false"/>
</column>
<column name="anonymous" type="BOOLEAN">
<constraints nullable="true"/>
<constraints nullable="false"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE">
<constraints nullable="true"/>
<constraints nullable="false"/>
</column>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="dm_channel" type="BOOLEAN">
<constraints nullable="true"/>
<constraints nullable="false"/>
</column>
<column name="author_user_in_server_id" type="BIGINT">
<constraints nullable="false"/>

View File

@@ -12,7 +12,7 @@
<constraints nullable="false" primaryKey="true" primaryKeyName="mod_mail_role_pkey"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE">
<constraints nullable="true"/>
<constraints nullable="false"/>
</column>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="role_id" type="BIGINT">

View File

@@ -12,7 +12,7 @@
<constraints nullable="false" primaryKey="true" primaryKeyName="mod_mail_subscriber_pkey"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE">
<constraints nullable="true"/>
<constraints nullable="false"/>
</column>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="user_in_server_id" type="BIGINT">

View File

@@ -11,15 +11,13 @@
<column autoIncrement="true" name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="mod_mail_thread_pkey"/>
</column>
<column name="closed" type="TIMESTAMP WITHOUT TIME ZONE">
<constraints nullable="true"/>
</column>
<column name="closed" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE">
<constraints nullable="true"/>
<constraints nullable="false"/>
</column>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="state" type="VARCHAR(255)">
<constraints nullable="true"/>
<constraints nullable="false"/>
</column>
<column name="channel_id" type="BIGINT">
<constraints nullable="false"/>

View File

@@ -27,7 +27,7 @@ public class ModMailMessage implements Serializable {
* The ID of the message which caused this message to be created, either the message containing the command or the message received from the user
*/
@Id
@Column(name = "id")
@Column(name = "id", nullable = false)
private Long messageId;
/**
@@ -62,18 +62,20 @@ public class ModMailMessage implements Serializable {
* true: message was send via command, false: message was send from the user
* This is used to decide where to get the message from in case of logging, because the user might delete the message and we do not want to re-parse the command message
*/
@Column(name = "dm_channel")
private Boolean dmChannel;
@Builder.Default
@Column(name = "dm_channel", nullable = false)
private Boolean dmChannel = false;
/**
* Staff only: Whether or not this message meant to be sent anonymous
*/
@Column(name = "anonymous")
private Boolean anonymous;
@Builder.Default
@Column(name = "anonymous", nullable = false)
private Boolean anonymous = false;
@Column(name = "created")
@Column(name = "created", nullable = false, insertable = false, updatable = false)
private Instant created;
@Column(name = "updated")
@Column(name = "updated", insertable = false, updatable = false)
private Instant updated;
}

View File

@@ -26,7 +26,7 @@ public class ModMailRole implements Serializable {
* Unique ID of the mod mail role
*/
@Id
@Column(name = "id")
@Column(name = "id", nullable = false)
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long modMailRoleId;
@@ -44,10 +44,10 @@ public class ModMailRole implements Serializable {
@JoinColumn(name = "role_id", nullable = false)
private ARole role;
@Column(name = "created")
@Column(name = "created", nullable = false, insertable = false, updatable = false)
private Instant created;
@Column(name = "updated")
@Column(name = "updated", insertable = false, updatable = false)
private Instant updated;
}

View File

@@ -27,7 +27,7 @@ public class ModMailThread implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
@Column(name = "id", nullable = false)
private Long id;
/**
@@ -51,10 +51,10 @@ public class ModMailThread implements Serializable {
@JoinColumn(name = "server_id", nullable = false)
private AServer server;
@Column(name = "created")
@Column(name = "created", nullable = false, insertable = false, updatable = false)
private Instant created;
@Column(name = "updated")
@Column(name = "updated", insertable = false, updatable = false)
private Instant updated;
@Column(name = "closed")

View File

@@ -5,6 +5,7 @@ import dev.sheldan.abstracto.core.models.database.AUserInAServer;
import lombok.*;
import javax.persistence.*;
import java.io.Serializable;
import java.time.Instant;
/**
@@ -19,11 +20,11 @@ import java.time.Instant;
@Getter
@Setter
@EqualsAndHashCode
public class ModMailThreadSubscriber {
public class ModMailThreadSubscriber implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
@Column(name = "id", nullable = false)
private Long subscriberId;
/**
@@ -44,10 +45,10 @@ public class ModMailThreadSubscriber {
@JoinColumn(name = "mod_mail_thread_id", nullable = false)
private ModMailThread threadReference;
@Column(name = "created")
@Column(name = "created", nullable = false, insertable = false, updatable = false)
private Instant created;
@Column(name = "updated")
@Column(name = "updated", insertable = false, updatable = false)
private Instant updated;
}