mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-04-12 19:18:42 +00:00
added liquibase for setup of databases and initial values
fixed some table names to be singular migrated templates to separate repository added seed data to initial version in liquibase migrations instead of property files (post targets, emotes etc) and created some default tables containing those default values added separate artifacts to be used containing only the liquibase config added shell script as a wrapper for ansible deployment, to handle an environment variable defining whether or not the deployment should be executed added logback scan period added licenses for ansible, liquibase, docker and docker-compose
This commit is contained in:
@@ -7,6 +7,9 @@ public class CommandNotFoundException extends AbstractoRunTimeException implemen
|
||||
public CommandNotFoundException() {
|
||||
super("");
|
||||
}
|
||||
public CommandNotFoundException(String text) {
|
||||
super(text);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTemplateName() {
|
||||
|
||||
@@ -6,6 +6,7 @@ import org.hibernate.annotations.CacheConcurrencyStrategy;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.io.Serializable;
|
||||
import java.time.Instant;
|
||||
import java.util.Objects;
|
||||
|
||||
@Entity
|
||||
@@ -36,6 +37,22 @@ public class ACommand implements Serializable {
|
||||
@JoinColumn(name = "feature_id", nullable = false)
|
||||
private AFeature feature;
|
||||
|
||||
@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();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
|
||||
@@ -10,7 +10,7 @@ import java.io.Serializable;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
@Entity
|
||||
@Entity(name = "command_in_server")
|
||||
@Getter
|
||||
@Builder
|
||||
@Setter
|
||||
|
||||
@@ -8,6 +8,7 @@ import org.hibernate.annotations.CacheConcurrencyStrategy;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.io.Serializable;
|
||||
import java.time.Instant;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
@@ -37,6 +38,22 @@ public class AModule implements Serializable {
|
||||
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
|
||||
private List<ACommand> commands = new ArrayList<>();
|
||||
|
||||
@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();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
|
||||
@@ -4,9 +4,12 @@ import dev.sheldan.abstracto.core.command.models.database.ACommand;
|
||||
import dev.sheldan.abstracto.core.command.models.database.AModule;
|
||||
import dev.sheldan.abstracto.core.models.database.AFeature;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
public interface CommandManagementService {
|
||||
ACommand createCommand(String name, String moduleName, String featureName);
|
||||
ACommand createCommand(String name, AModule moduleName, AFeature feature);
|
||||
Optional<ACommand> findCommandByNameOptional(String name);
|
||||
ACommand findCommandByName(String name);
|
||||
boolean doesCommandExist(String name);
|
||||
}
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
package dev.sheldan.abstracto.core.models.config;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class FeaturePropertiesConfig {
|
||||
private Boolean enabled;
|
||||
private String defaultMode;
|
||||
}
|
||||
@@ -47,13 +47,11 @@ public class AChannel implements SnowFlake, Serializable {
|
||||
this.created = Instant.now();
|
||||
}
|
||||
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Column
|
||||
private Boolean deleted;
|
||||
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
|
||||
@@ -7,7 +7,7 @@ import java.io.Serializable;
|
||||
import java.time.Instant;
|
||||
|
||||
@Entity
|
||||
@Table(name="default_configs")
|
||||
@Table(name="default_config")
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
|
||||
@@ -7,6 +7,7 @@ import org.hibernate.annotations.CacheConcurrencyStrategy;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.io.Serializable;
|
||||
import java.time.Instant;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
@@ -35,6 +36,22 @@ public class AFeature implements SnowFlake, Serializable {
|
||||
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
|
||||
private List<ACommand> commands;
|
||||
|
||||
@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();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
|
||||
@@ -8,7 +8,7 @@ import java.io.Serializable;
|
||||
import java.time.Instant;
|
||||
|
||||
@Entity
|
||||
@Table(name="feature_modes")
|
||||
@Table(name="feature_mode")
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
|
||||
@@ -25,8 +25,6 @@ public class AServer implements SnowFlake, Serializable {
|
||||
@Column(name = "id")
|
||||
private Long id;
|
||||
|
||||
private String name;
|
||||
|
||||
@Column(name = "created")
|
||||
private Instant created;
|
||||
|
||||
@@ -93,12 +91,11 @@ public class AServer implements SnowFlake, Serializable {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
AServer aServer = (AServer) o;
|
||||
return Objects.equals(id, aServer.id) &&
|
||||
Objects.equals(name, aServer.name);
|
||||
return Objects.equals(id, aServer.id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(id, name);
|
||||
return Objects.hash(id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
@Entity
|
||||
@Table(name="users")
|
||||
@Table(name="auser")
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
|
||||
import lombok.*;
|
||||
import org.hibernate.annotations.CacheConcurrencyStrategy;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.io.Serializable;
|
||||
import java.time.Instant;
|
||||
import java.util.Objects;
|
||||
|
||||
@Entity
|
||||
@Table(name = "default_emote")
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
@Cacheable
|
||||
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
|
||||
public class DefaultEmote implements Serializable {
|
||||
|
||||
@javax.persistence.Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Integer id;
|
||||
|
||||
@Column
|
||||
private String name;
|
||||
|
||||
@Column
|
||||
@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();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
DefaultEmote that = (DefaultEmote) o;
|
||||
return Objects.equals(id, that.id) &&
|
||||
Objects.equals(name, that.name) &&
|
||||
Objects.equals(emoteKey, that.emoteKey) &&
|
||||
Objects.equals(created, that.created) &&
|
||||
Objects.equals(updated, that.updated);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(id, name, emoteKey, created, updated);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
|
||||
import lombok.*;
|
||||
import org.hibernate.annotations.CacheConcurrencyStrategy;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.io.Serializable;
|
||||
import java.time.Instant;
|
||||
import java.util.Objects;
|
||||
|
||||
@Entity
|
||||
@Table(name="default_feature_flag")
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Cacheable
|
||||
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
|
||||
public class DefaultFeatureFlag implements Serializable {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
@Getter
|
||||
@Column(name = "id")
|
||||
public Long id;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@OneToOne
|
||||
@JoinColumn(name = "feature_id", nullable = false)
|
||||
private AFeature feature;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
private boolean enabled;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
private String mode;
|
||||
|
||||
@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();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
DefaultFeatureFlag that = (DefaultFeatureFlag) o;
|
||||
return enabled == that.enabled &&
|
||||
Objects.equals(id, that.id) &&
|
||||
Objects.equals(feature, that.feature) &&
|
||||
Objects.equals(mode, that.mode) &&
|
||||
Objects.equals(created, that.created) &&
|
||||
Objects.equals(updateTimestamp, that.updateTimestamp);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(id, feature, enabled, mode, created, updateTimestamp);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
|
||||
import lombok.*;
|
||||
import org.hibernate.annotations.CacheConcurrencyStrategy;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.io.Serializable;
|
||||
import java.time.Instant;
|
||||
import java.util.Objects;
|
||||
|
||||
@Entity
|
||||
@Table(name="default_posttarget")
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Cacheable
|
||||
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
|
||||
public class DefaultPostTarget implements Serializable {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
@Getter
|
||||
private Long id;
|
||||
|
||||
@Getter
|
||||
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();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -4,5 +4,4 @@ import dev.sheldan.abstracto.core.command.models.TableLocks;
|
||||
|
||||
public interface LockService {
|
||||
void lockTable(TableLocks toLock);
|
||||
void setupLocks();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
package dev.sheldan.abstracto.core.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.DefaultEmote;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface DefaultEmoteManagementService {
|
||||
DefaultEmote getDefaultEmote(String key);
|
||||
List<DefaultEmote> getAllDefaultEmotes();
|
||||
List<String> getDefaultEmoteNames();
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package dev.sheldan.abstracto.core.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.DefaultFeatureFlag;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface DefaultFeatureFlagManagementService {
|
||||
List<String> getDefaultFeatureKeys();
|
||||
List<DefaultFeatureFlag> getAllDefaultFeatureFlags();
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package dev.sheldan.abstracto.core.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.DefaultPostTarget;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface DefaultPostTargetManagementService {
|
||||
List<DefaultPostTarget> getAllDefaultPostTargets();
|
||||
List<String> getDefaultPostTargetKeys();
|
||||
}
|
||||
Reference in New Issue
Block a user