[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

@@ -19,11 +19,11 @@ import java.util.List;
@EqualsAndHashCode
public class ACommand implements Serializable {
@Id
@Column(name = "id")
@Column(name = "id", nullable = false)
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "name")
@Column(name = "name", nullable = false)
private String name;
@ManyToOne(fetch = FetchType.LAZY)
@@ -37,10 +37,10 @@ public class ACommand implements Serializable {
@JoinColumn(name = "feature_id", nullable = false)
private AFeature feature;
@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

@@ -20,7 +20,7 @@ public class ACommandInAServer implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "command_in_server_id")
@Column(name = "command_in_server_id", nullable = false)
private Long commandInServerId;
@OneToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@@ -44,13 +44,14 @@ public class ACommandInAServer implements Serializable {
@Getter
@Setter
@Column(name = "restricted")
private Boolean restricted;
@Builder.Default
@Column(name = "restricted", nullable = false)
private Boolean restricted = 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;
@Column(name = "cool_down")

View File

@@ -23,7 +23,7 @@ public class ACommandInServerAlias implements Serializable {
@JoinColumn(name = "command_in_server_id", referencedColumnName = "command_in_server_id", nullable = false)
private ACommandInAServer commandInAServer;
@Column(name = "created")
@Column(name = "created", nullable = false, insertable = false, updatable = false)
private Instant created;
}

View File

@@ -18,7 +18,7 @@ import java.util.List;
public class AModule implements Serializable {
@Id
@Column(name = "id")
@Column(name = "id", nullable = false)
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@@ -31,10 +31,10 @@ public class AModule implements Serializable {
@Builder.Default
private List<ACommand> commands = new ArrayList<>();
@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

@@ -16,16 +16,16 @@ import java.time.Instant;
@EqualsAndHashCode
public class CommandDisabledChannelGroup {
@Id
@Column(name = "id")
@Column(name = "id", nullable = false)
private Long id;
@OneToOne(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@PrimaryKeyJoinColumn
private AChannelGroup channelGroup;
@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

@@ -16,7 +16,7 @@ import java.time.Instant;
@EqualsAndHashCode
public class CoolDownChannelGroup {
@Id
@Column(name = "id")
@Column(name = "id", nullable = false)
private Long id;
@OneToOne(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@@ -29,9 +29,9 @@ public class CoolDownChannelGroup {
@Column(name = "member_cool_down")
private Long memberCoolDown;
@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

@@ -18,7 +18,7 @@ public class AChannel implements SnowFlake, Serializable {
@Id
@Getter
@Column(name = "id")
@Column(name = "id", nullable = false)
public Long id;
@Getter
@@ -35,16 +35,17 @@ public class AChannel implements SnowFlake, Serializable {
@Enumerated(EnumType.STRING)
private AChannelType type;
@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;
@Getter
@Setter
@Column
private Boolean deleted;
@Builder.Default
@Column(name = "deleted", nullable = false)
private Boolean deleted = false;
@Transient
private boolean fake;

View File

@@ -19,10 +19,10 @@ public class AChannelGroup implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
@Column(name = "id", nullable = false)
private Long id;
@Column(name = "group_name")
@Column(name = "group_name", nullable = false)
private String groupName;
@ManyToOne(fetch = FetchType.LAZY)
@@ -30,16 +30,16 @@ public class AChannelGroup implements Serializable {
private AServer server;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "group_type_id")
@JoinColumn(name = "group_type_id", nullable = false)
private ChannelGroupType channelGroupType;
@OneToMany(mappedBy = "group", fetch = FetchType.LAZY, orphanRemoval = true)
private List<AChannelGroupCommand> channelGroupCommands;
@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;
@ManyToMany
@@ -49,8 +49,9 @@ public class AChannelGroup implements Serializable {
inverseJoinColumns = @JoinColumn(name = "channel_id"))
private List<AChannel> channels;
@Column(name = "enabled")
private Boolean enabled;
@Column(name = "enabled", nullable = false)
@Builder.Default
private Boolean enabled = true;
}

View File

@@ -18,7 +18,7 @@ public class AChannelGroupCommand implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "command_in_group_id")
@Column(name = "command_in_group_id", nullable = false)
private Long commandInGroupId;
@ManyToOne(fetch = FetchType.LAZY)
@@ -27,7 +27,7 @@ public class AChannelGroupCommand implements Serializable {
private ACommand command;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="server_id")
@JoinColumn(name="server_id", nullable = false)
private AServer server;
@ManyToOne(fetch = FetchType.LAZY)
@@ -36,13 +36,14 @@ public class AChannelGroupCommand implements Serializable {
private AChannelGroup group;
@Setter
@Column(name = "enabled")
private Boolean enabled;
@Builder.Default
@Column(name = "enabled", nullable = false)
private Boolean enabled = true;
@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

@@ -17,11 +17,11 @@ import java.time.Instant;
public class AConfig implements Serializable {
@Id
@Column(name = "id")
@Column(name = "id", nullable = false)
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(name = "name")
@Column(name = "name", nullable = false)
private String name;
@Column(name = "string_value")
@@ -37,10 +37,10 @@ public class AConfig 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;
public String getValueAsString() {

View File

@@ -18,10 +18,10 @@ public class AEmote implements Serializable, Fakeable {
@javax.persistence.Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
@Column(name = "id", nullable = false)
private Integer id;
@Column(name = "name")
@Column(name = "name", nullable = false)
private String name;
// the way discord calls them and the unicode char for default Tweemoji emotes
@@ -37,18 +37,19 @@ public class AEmote implements Serializable, Fakeable {
@Setter
private Boolean animated;
@Column(name = "custom")
@Builder.Default
@Column(name = "custom", nullable = false)
@Setter
private Boolean custom;
private Boolean custom = false;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "server_id", nullable = false)
private AServer serverRef;
@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 = "changeable")

View File

@@ -20,12 +20,12 @@ public class AFeature implements SnowFlake, Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Getter
@Column(name = "id")
@Column(name = "id", nullable = false)
public Long id;
@Getter
@Setter
@Column(name = "key")
@Column(name = "key", nullable = false)
private String key;
@Getter
@@ -33,10 +33,10 @@ public class AFeature implements SnowFlake, Serializable {
@OneToMany(fetch = FetchType.LAZY, mappedBy = "feature")
private List<ACommand> commands;
@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

@@ -19,7 +19,7 @@ public class AFeatureFlag implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
@Column(name = "id", nullable = false)
public Long id;
@ManyToOne(fetch = FetchType.LAZY)
@@ -33,13 +33,14 @@ public class AFeatureFlag implements Serializable {
@OneToMany(fetch = FetchType.LAZY, mappedBy = "featureFlag")
private List<AFeatureMode> modes;
@Column(name = "enabled")
private boolean enabled;
@Builder.Default
@Column(name = "enabled", nullable = false)
private boolean enabled = 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 updateTimestamp;
}

View File

@@ -17,27 +17,28 @@ import java.time.Instant;
public class AFeatureMode implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
@Column(name = "id", nullable = false)
public Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "feature_flag_id", nullable = false)
private AFeatureFlag featureFlag;
@Column(name = "feature_mode")
@Column(name = "feature_mode", nullable = false)
private String featureMode;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "server_id", nullable = false)
private AServer server;
@Column(name = "enabled")
private Boolean enabled;
@Builder.Default
@Column(name = "enabled", nullable = false)
private Boolean enabled = false;
@Column(name = "created")
@Column(name = "created", nullable = false, insertable = false, updatable = false)
private Instant created;
@Column(name = "updated")
private Instant updateTimestamp;
@Column(name = "updated", insertable = false, updatable = false)
private Instant updated;
}

View File

@@ -18,6 +18,7 @@ public class ARole implements SnowFlake, Serializable {
@Id
@Getter
@Setter
@Column(name = "id", nullable = false)
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@@ -28,13 +29,14 @@ public class ARole implements SnowFlake, Serializable {
@Getter
@Setter
@Column(name = "deleted")
private Boolean deleted;
@Builder.Default
@Column(name = "deleted", nullable = false)
private Boolean deleted = 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;
@Transient

View File

@@ -19,18 +19,19 @@ import java.util.List;
public class AServer implements SnowFlake, Serializable {
@Id
@Column(name = "id")
@Column(name = "id", nullable = false)
private Long id;
@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;
@Setter
@Column(name = "admin_mode")
private Boolean adminMode;
@Builder.Default
@Column(name = "admin_mode", nullable = false)
private Boolean adminMode = true;
@Transient
private boolean fake;

View File

@@ -17,7 +17,7 @@ import java.util.List;
public class AUser implements Serializable {
@Id
@Column(name = "id")
@Column(name = "id", nullable = false)
private Long id;
@OneToMany(
@@ -26,10 +26,10 @@ public class AUser implements Serializable {
mappedBy = "serverReference")
private List<AUserInAServer> servers;
@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

@@ -18,7 +18,7 @@ public class AUserInAServer implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_in_server_id")
@Column(name = "user_in_server_id", nullable = false)
private Long userInServerId;
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@@ -29,10 +29,10 @@ public class AUserInAServer implements Serializable {
@JoinColumn(name = "server_id", nullable = false)
private AServer serverReference;
@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

@@ -18,7 +18,7 @@ import java.time.Instant;
public class AllowedMention implements Serializable {
@Id
@Column(name = "server_id")
@Column(name = "server_id", nullable = false)
private Long id;
@OneToOne(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@@ -27,21 +27,24 @@ public class AllowedMention implements Serializable {
private AServer server;
@Getter
@Column(name = "everyone_mention")
private Boolean everyone;
@Builder.Default
@Column(name = "everyone_mention", nullable = false)
private Boolean everyone = false;
@Getter
@Column(name = "user_mention")
private Boolean user;
@Builder.Default
@Column(name = "user_mention", nullable = false)
private Boolean user = false;
@Getter
@Column(name = "role_mention")
private Boolean role;
@Builder.Default
@Column(name = "role_mention", nullable = false)
private Boolean role = 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;
public boolean allAllowed() {

View File

@@ -3,6 +3,7 @@ package dev.sheldan.abstracto.core.models.database;
import lombok.*;
import javax.persistence.*;
import java.io.Serializable;
import java.time.Instant;
@Entity
@@ -13,25 +14,27 @@ import java.time.Instant;
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode
public class ChannelGroupType {
public class ChannelGroupType implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
@Column(name = "id", nullable = false)
private Integer id;
@Column(name = "group_type_key")
@Column(name = "group_type_key", nullable = false)
private String groupTypeKey;
@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 = "allows_channel_in_multiple")
private Boolean allowsChannelsInMultiple;
@Builder.Default
@Column(name = "allows_channel_in_multiple", nullable = false)
private Boolean allowsChannelsInMultiple = true;
@Column(name = "allows_commands_in_multiple")
private Boolean allowsCommandsInMultiple;
@Builder.Default
@Column(name = "allows_commands_in_multiple", nullable = false)
private Boolean allowsCommandsInMultiple = true;
}

View File

@@ -24,6 +24,6 @@ public class Counter implements Serializable {
@JoinColumn(name = "server_id", referencedColumnName = "id", nullable = false)
private AServer server;
@Column(name = "counter")
@Column(name = "counter", nullable = false)
private Long counter;
}

View File

@@ -16,21 +16,21 @@ import java.time.Instant;
public class DefaultEmote implements Serializable {
@javax.persistence.Id
@Column(name = "id")
@Column(name = "id", nullable = false)
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(name = "name")
@Column(name = "name", nullable = false)
private String name;
@Column(name = "emote_key")
@Column(name = "emote_key", nullable = false)
@Setter
private String emoteKey;
@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

@@ -17,15 +17,15 @@ public class EffectType {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
@Column(name = "id", nullable = false)
private Long id;
@Column(name = "effect_type_key")
@Column(name = "effect_type_key", nullable = false)
private String effectTypeKey;
@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

@@ -17,11 +17,11 @@ public class PostTarget implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Getter
@Column(name = "id")
@Column(name = "id", nullable = false)
private Long id;
@Getter
@Column(name = "name")
@Column(name = "name", nullable = false)
private String name;
@OneToOne(fetch = FetchType.LAZY)
@@ -36,10 +36,10 @@ public class PostTarget implements Serializable {
@Setter
private AServer serverReference;
@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

@@ -19,10 +19,10 @@ public class ProfanityGroup {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
@Column(name = "id", nullable = false)
private Long id;
@Column(name = "name")
@Column(name = "name", nullable = false)
private String groupName;
@OneToMany(
@@ -39,7 +39,7 @@ public class ProfanityGroup {
@Setter
private AServer server;
@Column(name = "created")
@Column(name = "created", nullable = false, insertable = false, updatable = false)
private Instant created;
}

View File

@@ -16,13 +16,13 @@ import java.time.Instant;
public class ProfanityRegex {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
@Column(name = "id", nullable = false)
private Long id;
@Column(name = "name")
@Column(name = "name", nullable = false)
private String regexName;
@Column(name = "regex")
@Column(name = "regex", nullable = false)
private String regex;
@Column(name = "replacement")
@@ -34,6 +34,6 @@ public class ProfanityRegex {
@Setter
private ProfanityGroup group;
@Column(name = "created")
@Column(name = "created", nullable = false, insertable = false, updatable = false)
private Instant created;
}

View File

@@ -33,9 +33,9 @@ public class RoleImmunity {
@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;
}

View File

@@ -14,6 +14,7 @@ import javax.persistence.*;
public class AutoLoadMacro {
@Id
@Column(name = "key", nullable = false)
private String key;
@OneToOne(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.MERGE})

View File

@@ -24,13 +24,13 @@ public class CustomTemplate implements Serializable {
* The globally unique key of the template
*/
@Id
@Column(name = "key")
@Column(name = "key", nullable = false)
private String key;
/**
* The content of the template
*/
@Column(length = 4000, name = "content")
@Column(length = 4000, name = "content", nullable = false)
private String content;
@Column(name = "section")
@@ -46,13 +46,13 @@ public class CustomTemplate implements Serializable {
/**
* The time this template was created in the database
*/
@Column(name = "created")
@Column(name = "created", nullable = false, insertable = false, updatable = false)
private Instant created;
/**
* The time this template was updated in the database, only works when using the bot, does not work with triggers.
*/
@Column(name = "updated")
@Column(name = "updated", insertable = false, updatable = false)
private Instant updated;
}

View File

@@ -22,13 +22,13 @@ public class Template implements Serializable {
* The globally unique key of the template
*/
@Id
@Column(name = "key")
@Column(name = "key", nullable = false)
private String key;
/**
* The content of the template
*/
@Column(length = 4000, name = "content")
@Column(length = 4000, name = "content", nullable = false)
private String content;
@Column(name = "section")
@@ -40,13 +40,13 @@ public class Template implements Serializable {
/**
* The time this template was created in the database
*/
@Column(name = "created")
@Column(name = "created", nullable = false, insertable = false, updatable = false)
private Instant created;
/**
* The time this template was updated in the database, only works when using the bot, does not work with triggers.
*/
@Column(name = "updated")
@Column(name = "updated", insertable = false, updatable = false)
private Instant updated;
}