mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-03-27 14:23:56 +00:00
added default value handling to setup wizard
added table to store the default values of the whole system, to not require the property files added ability to cancel setup wizard
This commit is contained in:
@@ -3,9 +3,8 @@ package dev.sheldan.abstracto.core.interactive;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.AServerChannelUserId;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
public interface SetupStep {
|
||||
CompletableFuture<List<DelayedActionConfig>> execute(AServerChannelUserId aUserInAServer, SetupStepParameter parameter);
|
||||
CompletableFuture<SetupStepResult> execute(AServerChannelUserId aUserInAServer, SetupStepParameter parameter);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
package dev.sheldan.abstracto.core.interactive;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class SetupStepResult {
|
||||
private List<DelayedActionConfig> delayedActionConfigList;
|
||||
private SetupStepResultType result;
|
||||
|
||||
public static SetupStepResult fromCancelled() {
|
||||
return SetupStepResult.builder().result(SetupStepResultType.CANCELLED).build();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package dev.sheldan.abstracto.core.interactive;
|
||||
|
||||
public enum SetupStepResultType {
|
||||
SUCCESS, CANCELLED
|
||||
}
|
||||
@@ -58,6 +58,17 @@ public class AConfig {
|
||||
this.updated = Instant.now();
|
||||
}
|
||||
|
||||
public String getValueAsString() {
|
||||
if(getLongValue() != null) {
|
||||
return getLongValue().toString();
|
||||
} else if(getDoubleValue() != null) {
|
||||
return getDoubleValue().toString();
|
||||
} else if(getStringValue() != null) {
|
||||
return getStringValue();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
package dev.sheldan.abstracto.core.models.database;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
import javax.persistence.*;
|
||||
import java.time.Instant;
|
||||
|
||||
@Entity
|
||||
@Table(name="default_configs")
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Getter
|
||||
public class ADefaultConfig {
|
||||
@javax.persistence.Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Integer Id;
|
||||
|
||||
@Column
|
||||
private String name;
|
||||
|
||||
@Column
|
||||
@Setter
|
||||
private String stringValue;
|
||||
|
||||
@Column
|
||||
@Setter
|
||||
private Double doubleValue;
|
||||
|
||||
@Column
|
||||
@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();
|
||||
} else if(getDoubleValue() != null) {
|
||||
return getDoubleValue().toString();
|
||||
} else if(getStringValue() != null) {
|
||||
return getStringValue();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -9,5 +9,5 @@ import lombok.Setter;
|
||||
@Setter
|
||||
@Builder
|
||||
public class SetupCompletedNotificationModel {
|
||||
private FeatureConfig completedFeature;
|
||||
private FeatureConfig featureConfig;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package dev.sheldan.abstracto.core.models.template.commands;
|
||||
|
||||
import dev.sheldan.abstracto.core.config.FeatureConfig;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class SetupInitialMessageModel {
|
||||
private FeatureConfig featureConfig;
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package dev.sheldan.abstracto.core.models.template.commands;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.ADefaultConfig;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
public class SetupSystemConfigMessageModel {
|
||||
private String configKey;
|
||||
private ADefaultConfig defaultConfig;
|
||||
}
|
||||
@@ -1,5 +1,7 @@
|
||||
package dev.sheldan.abstracto.core.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.AConfig;
|
||||
|
||||
public interface ConfigService {
|
||||
Double getDoubleValue(String name, Long serverId);
|
||||
Long getLongValue(String name, Long serverId);
|
||||
@@ -9,8 +11,9 @@ public interface ConfigService {
|
||||
void setDoubleValue(String name, Long serverId, Double value);
|
||||
void setLongValue(String name, Long serverId, Long value);
|
||||
void setConfigValue(String name, Long serverId, String value);
|
||||
void setConfigValue(String name, Long serverId, AConfig value);
|
||||
void setStringValue(String name, Long serverId, String value);
|
||||
boolean configIsFitting(String name, Long serverId, String value);
|
||||
void validateConfig(String name, Long serverId, String value);
|
||||
AConfig getFakeConfigForValue(String name, Long serverId, String value);
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
package dev.sheldan.abstracto.core.service.management;
|
||||
|
||||
import dev.sheldan.abstracto.core.models.database.ADefaultConfig;
|
||||
|
||||
public interface DefaultConfigManagementService {
|
||||
void createDefaultConfig(String key, String value);
|
||||
void createDefaultConfig(String key, Long value);
|
||||
void createDefaultConfig(String key, Double value);
|
||||
ADefaultConfig getDefaultConfig(String key);
|
||||
}
|
||||
Reference in New Issue
Block a user