[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

@@ -12,7 +12,7 @@
<constraints nullable="false" primaryKey="true" primaryKeyName="disabled_experience_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"/>
</createTable>

View File

@@ -12,11 +12,11 @@
<constraints nullable="false" primaryKey="true" primaryKeyName="experience_level_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="experience_needed" type="BIGINT">
<constraints nullable="true"/>
<constraints nullable="false"/>
</column>
</createTable>
<sql>

View File

@@ -12,7 +12,7 @@
<constraints nullable="false" primaryKey="true" primaryKeyName="experience_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="level_id" type="INTEGER">

View File

@@ -12,16 +12,16 @@
<constraints nullable="false" primaryKey="true" primaryKeyName="user_experience_pkey"/>
</column>
<column name="experience" type="BIGINT">
<constraints nullable="true"/>
<constraints nullable="false"/>
</column>
<column name="experience_gain_disabled" type="BOOLEAN">
<constraints nullable="true"/>
<constraints nullable="false"/>
</column>
<column name="message_count" type="BIGINT">
<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="role_id" type="BIGINT"/>

View File

@@ -24,7 +24,7 @@ public class ADisabledExpRole implements Serializable {
* The ID of the {@link ARole role} which is being marked to be used as a marker for {@link net.dv8tion.jda.api.entities.Member} which should not gain experience
*/
@Id
@Column(name = "id")
@Column(name = "id", nullable = false)
private Long id;
/**
@@ -37,12 +37,12 @@ public class ADisabledExpRole implements Serializable {
/**
* The {@link Instant} this entity was created
*/
@Column(name = "created")
@Column(name = "created", nullable = false, insertable = false, updatable = false)
private Instant created;
/**
* The {@link Instant} this entity was updated
*/
@Column(name = "updated")
@Column(name = "updated", insertable = false, updatable = false)
private Instant updated;
}

View File

@@ -23,25 +23,25 @@ public class AExperienceLevel implements Serializable {
* The unique level from 0 to as defined in the configuration. Will be created on startup.
*/
@Id
@Column(name = "level")
@Column(name = "level", nullable = false)
private Integer level;
/**
* The total amount of experience needed for this level.
*/
@Column(name = "experience_needed")
@Column(name = "experience_needed", nullable = false)
private Long experienceNeeded;
/**
* The {@link Instant} this entity was created
*/
@Column(name = "created")
@Column(name = "created", nullable = false, insertable = false, updatable = false)
private Instant created;
/**
* The {@link Instant} this entity was updated
*/
@Column(name = "updated")
@Column(name = "updated", insertable = false, updatable = false)
private Instant updated;
}

View File

@@ -28,7 +28,7 @@ public class AExperienceRole implements Serializable {
* The ID of the {@link ARole} to be awarded at a certain experience level
*/
@Id
@Column(name = "id")
@Column(name = "id", nullable = false)
private Long id;
/**
@@ -57,13 +57,13 @@ public class AExperienceRole implements Serializable {
/**
* The {@link Instant} this entity was created
*/
@Column(name = "created")
@Column(name = "created", nullable = false, insertable = false, updatable = false)
private Instant created;
/**
* The {@link Instant} this entity was updated
*/
@Column(name = "updated")
@Column(name = "updated", insertable = false, updatable = false)
private Instant updated;
/**

View File

@@ -27,7 +27,7 @@ public class AUserExperience implements Serializable {
* The ID of the {@link AUserInAServer user} which is represented by this object
*/
@Id
@Column(name = "id")
@Column(name = "id", nullable = false)
private Long id;
/**
@@ -44,20 +44,21 @@ public class AUserExperience implements Serializable {
/**
* The total amount of experience the user has in the guild
*/
@Column(name = "experience")
@Column(name = "experience", nullable = false)
private Long experience;
/**
* The total amount of messages the user has written in the guild resulting in the experience.
*/
@Column(name = "message_count")
@Column(name = "message_count", nullable = false)
private Long messageCount;
/**
* Whether or not the experience gain has been disabled for this user
*/
@Column(name = "experience_gain_disabled")
private Boolean experienceGainDisabled;
@Builder.Default
@Column(name = "experience_gain_disabled", nullable = false)
private Boolean experienceGainDisabled = false;
/**
* The {@link AExperienceLevel level} which the user currently has.
@@ -76,13 +77,13 @@ public class AUserExperience implements Serializable {
/**
* The {@link Instant} this entity was created
*/
@Column(name = "created")
@Column(name = "created", nullable = false, insertable = false, updatable = false)
private Instant created;
/**
* The {@link Instant} this entity was updated
*/
@Column(name = "updated")
@Column(name = "updated", insertable = false, updatable = false)
private Instant updated;
public Integer getLevelOrDefault() {