mirror of
https://github.com/Sheldan/abstracto.git
synced 2026-03-24 13:44:33 +00:00
renamed feature display to feature config
added concept of feature dependencies, if one feature depends on another feature, and it gets enabled, the other feature is enabled as well changed some feature related apis added ability to automatically decay warnings (separate feature) added command to trigger the warn decay manually added command to decay all active warnings added method to scheduler service to directly start a cron job
This commit is contained in:
@@ -31,7 +31,7 @@ public class FeatureEnabledCondition implements CommandCondition {
|
||||
featureFlagValue = featureFlagManagementService.getFeatureFlagValue(feature, context.getGuild().getIdLong());
|
||||
FeatureDisabledMessage featureDisabledMessage = FeatureDisabledMessage
|
||||
.builder()
|
||||
.featureDisplay(featureFlagService.getFeatureDisplayforFeature(feature))
|
||||
.featureConfig(featureFlagService.getFeatureDisplayForFeature(feature))
|
||||
.build();
|
||||
reason = templateService.renderTemplate("feature_disabled_message", featureDisabledMessage);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package dev.sheldan.abstracto.core.command.models;
|
||||
|
||||
import dev.sheldan.abstracto.core.config.FeatureDisplay;
|
||||
import dev.sheldan.abstracto.core.config.FeatureConfig;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
@@ -9,5 +9,5 @@ import lombok.Setter;
|
||||
@Getter
|
||||
@Builder
|
||||
public class FeatureDisabledMessage {
|
||||
private FeatureDisplay featureDisplay;
|
||||
private FeatureConfig featureConfig;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
package dev.sheldan.abstracto.core.config;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public interface FeatureConfig {
|
||||
FeatureEnum getFeature();
|
||||
default List<FeatureConfig> getRequiredFeatures() {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
default List<FeatureConfig> getDependantFeatures() {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
package dev.sheldan.abstracto.core.config;
|
||||
|
||||
public interface FeatureDisplay {
|
||||
FeatureEnum getFeature();
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
package dev.sheldan.abstracto.core.models.template.commands;
|
||||
|
||||
import dev.sheldan.abstracto.core.config.FeatureDisplay;
|
||||
import dev.sheldan.abstracto.core.config.FeatureConfig;
|
||||
import dev.sheldan.abstracto.core.models.database.AFeatureFlag;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
@@ -11,5 +11,5 @@ import lombok.Setter;
|
||||
@Builder
|
||||
public class FeatureFlagDisplay {
|
||||
private AFeatureFlag featureFlag;
|
||||
private FeatureDisplay featureDisplay;
|
||||
private FeatureConfig featureConfig;
|
||||
}
|
||||
|
||||
@@ -1,18 +1,23 @@
|
||||
package dev.sheldan.abstracto.core.service;
|
||||
|
||||
import dev.sheldan.abstracto.core.config.FeatureDisplay;
|
||||
import dev.sheldan.abstracto.core.config.FeatureConfig;
|
||||
import dev.sheldan.abstracto.core.config.FeatureEnum;
|
||||
import dev.sheldan.abstracto.core.models.database.AServer;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface FeatureFlagService {
|
||||
boolean isFeatureEnabled(FeatureEnum name, Long serverId);
|
||||
void enableFeature(FeatureEnum name, Long serverId);
|
||||
void disableFeature(FeatureEnum name, Long serverId);
|
||||
boolean isFeatureEnabled(FeatureConfig name, Long serverId);
|
||||
boolean isFeatureEnabled(FeatureConfig name, AServer server);
|
||||
void enableFeature(FeatureConfig name, Long serverId);
|
||||
void enableFeature(FeatureConfig name, AServer server);
|
||||
void disableFeature(FeatureConfig name, Long serverId);
|
||||
void disableFeature(FeatureConfig name, AServer server);
|
||||
List<String> getAllFeatures();
|
||||
List<FeatureDisplay> getAllFeatureDisplays();
|
||||
FeatureDisplay getFeatureDisplayforFeature(FeatureEnum featureEnum);
|
||||
boolean doesFeatureExist(FeatureEnum name);
|
||||
List<FeatureConfig> getAllFeatureConfigs();
|
||||
FeatureConfig getFeatureDisplayForFeature(FeatureEnum featureEnum);
|
||||
FeatureConfig getFeatureDisplayForFeature(String key);
|
||||
boolean doesFeatureExist(FeatureConfig name);
|
||||
List<String> getFeaturesAsList();
|
||||
FeatureEnum getFeatureEnum(String key);
|
||||
}
|
||||
|
||||
@@ -12,7 +12,10 @@ public interface FeatureFlagManagementService {
|
||||
void createFeatureFlag(AFeature feature, Long serverId, Boolean newValue);
|
||||
void createFeatureFlag(AFeature feature, AServer server, Boolean newValue);
|
||||
boolean getFeatureFlagValue(FeatureEnum key, Long serverId);
|
||||
boolean getFeatureFlagValue(FeatureEnum key, AServer server);
|
||||
void updateFeatureFlag(FeatureEnum key, Long serverId, Boolean newValue);
|
||||
void updateFeatureFlag(FeatureEnum key, AServer server, Boolean newValue);
|
||||
Optional<AFeatureFlag> getFeatureFlag(AFeature key, Long serverId);
|
||||
Optional<AFeatureFlag> getFeatureFlag(AFeature key, AServer server);
|
||||
List<AFeatureFlag> getFeatureFlagsOfServer(AServer server);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user