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:
Sheldan
2020-07-01 20:44:21 +02:00
parent e8767429bf
commit 9374dfb912
965 changed files with 15775 additions and 2935 deletions

View File

@@ -11,6 +11,29 @@
<packaging>jar</packaging>
<artifactId>core-impl</artifactId>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptors>
<descriptor>src/main/assembly/liquibase.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
@@ -103,6 +126,8 @@
<artifactId>gson</artifactId>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,18 @@
<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.0 http://maven.apache.org/xsd/assembly-2.1.0.xsd">
<id>liquibase</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<outputDirectory>.</outputDirectory>
<directory>${project.basedir}/src/main/resources/migrations</directory>
<includes>
<include>**/*</include>
</includes>
</fileSet>
</fileSets>
</assembly>

View File

@@ -1,10 +0,0 @@
package dev.sheldan.abstracto.core.command.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
@Configuration
@PropertySource("classpath:commands.properties")
public class CommandConfig {
}

View File

@@ -1,52 +0,0 @@
package dev.sheldan.abstracto.core.command.config;
import dev.sheldan.abstracto.core.command.Command;
import dev.sheldan.abstracto.core.command.service.CommandService;
import dev.sheldan.abstracto.core.command.service.management.FeatureManagementService;
import dev.sheldan.abstracto.core.service.FeatureConfigService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Component
@Slf4j
public class CommandCreationListener {
@Autowired
private List<Command> commandList;
@Autowired
private CommandService commandService;
@Autowired
private FeatureConfigService featureFlagService;
@Autowired
private FeatureManagementService featureManagementService;
@EventListener
@Transactional
public void handleContextRefreshEvent(ContextRefreshedEvent ctxStartEvt) {
featureFlagService.getAllFeatureConfigs().forEach(featureFlagKey -> {
String featureKey = featureFlagKey.getFeature().getKey();
if(!featureManagementService.featureExists(featureKey)) {
featureManagementService.createFeature(featureKey);
}
});
commandList.forEach(command -> {
if(command.getConfiguration() == null) {
log.warn("Command {} has null configuration.", command);
return;
}
if(!commandService.doesCommandExist(command.getConfiguration().getName())) {
commandService.createCommand(command.getConfiguration().getName(), command.getConfiguration().getModule(), command.getFeature());
}
});
}
}

View File

@@ -6,12 +6,13 @@ import org.springframework.data.jpa.repository.QueryHints;
import org.springframework.stereotype.Repository;
import javax.persistence.QueryHint;
import java.util.Optional;
@Repository
public interface CommandRepository extends JpaRepository<ACommand, Long> {
@QueryHints(@QueryHint(name = org.hibernate.annotations.QueryHints.CACHEABLE, value = "true"))
ACommand findByName(String name);
Optional<ACommand> findByNameIgnoreCase(String name);
boolean existsByName(String name);
boolean existsByNameIgnoreCase(String name);
}

View File

@@ -8,6 +8,7 @@ import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
import dev.sheldan.abstracto.core.command.config.Parameter;
import dev.sheldan.abstracto.core.command.execution.UnParsedCommandParameter;
import dev.sheldan.abstracto.core.service.ConfigService;
import dev.sheldan.abstracto.core.service.management.DefaultConfigManagementService;
import net.dv8tion.jda.api.entities.Message;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -20,14 +21,15 @@ import java.util.Optional;
@Service
public class CommandManager implements CommandRegistry {
public static final String PREFIX = "prefix";
@Autowired
private List<Command> commands;
@Autowired
private ConfigService configService;
@Value("${abstracto.prefix}")
private String defaultPrefix;
@Autowired
private DefaultConfigManagementService defaultConfigManagementService;
@Override
public Command findCommandByParameters(String name, UnParsedCommandParameter unParsedCommandParameter) {
@@ -101,7 +103,7 @@ public class CommandManager implements CommandRegistry {
@Override
public boolean isCommand(Message message) {
return message.getContentRaw().startsWith(configService.getStringValue("prefix", message.getGuild().getIdLong(), defaultPrefix));
return message.getContentRaw().startsWith(configService.getStringValue(PREFIX, message.getGuild().getIdLong(), defaultConfigManagementService.getDefaultConfig(PREFIX).getStringValue()));
}
@Override
@@ -116,6 +118,6 @@ public class CommandManager implements CommandRegistry {
@Override
public String getCommandName(String input, Long serverId) {
return input.replaceFirst(configService.getStringValue("prefix", serverId, defaultPrefix), "");
return input.replaceFirst(configService.getStringValue(PREFIX, serverId, defaultConfigManagementService.getDefaultConfig(PREFIX).getStringValue()), "");
}
}

View File

@@ -1,5 +1,6 @@
package dev.sheldan.abstracto.core.command.service.management;
import dev.sheldan.abstracto.core.command.exception.CommandNotFoundException;
import dev.sheldan.abstracto.core.command.models.database.ACommand;
import dev.sheldan.abstracto.core.command.models.database.AModule;
import dev.sheldan.abstracto.core.command.repository.CommandRepository;
@@ -7,6 +8,8 @@ import dev.sheldan.abstracto.core.models.database.AFeature;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Optional;
@Component
public class CommandManagementServiceBean implements CommandManagementService {
@@ -38,14 +41,19 @@ public class CommandManagementServiceBean implements CommandManagementService {
return command;
}
@Override
public Optional<ACommand> findCommandByNameOptional(String name) {
return commandRepository.findByNameIgnoreCase(name.toLowerCase());
}
@Override
public ACommand findCommandByName(String name) {
return commandRepository.findByName(name.toLowerCase());
return findCommandByNameOptional(name).orElseThrow(() -> new CommandNotFoundException(String.format("Command %s was not found.", name)));
}
@Override
public boolean doesCommandExist(String name) {
return commandRepository.existsByName(name.toLowerCase());
return commandRepository.existsByNameIgnoreCase(name.toLowerCase());
}
}

View File

@@ -1,5 +1,6 @@
package dev.sheldan.abstracto.core.commands.utility;
import dev.sheldan.abstracto.core.command.UtilityModuleInterface;
import dev.sheldan.abstracto.core.command.condition.AbstractConditionableCommand;
import dev.sheldan.abstracto.core.command.config.HelpInfo;
import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
@@ -42,7 +43,7 @@ public class Echo extends AbstractConditionableCommand {
HelpInfo helpInfo = HelpInfo.builder().templated(true).build();
return CommandConfiguration.builder()
.name("echo")
.module("utility")
.module(UtilityModuleInterface.UTILITY)
.templated(true)
.causesReaction(false)
.parameters(parameters)

View File

@@ -1,6 +1,7 @@
package dev.sheldan.abstracto.core.commands.utility;
import dev.sheldan.abstracto.core.command.Command;
import dev.sheldan.abstracto.core.command.UtilityModuleInterface;
import dev.sheldan.abstracto.core.command.config.CommandConfiguration;
import dev.sheldan.abstracto.core.command.config.HelpInfo;
import dev.sheldan.abstracto.core.command.execution.CommandContext;
@@ -34,7 +35,7 @@ public class Ping implements Command {
HelpInfo helpInfo = HelpInfo.builder().templated(true).build();
return CommandConfiguration.builder()
.name("ping")
.module("utility")
.module(UtilityModuleInterface.UTILITY)
.templated(true)
.help(helpInfo)
.causesReaction(false)

View File

@@ -1,41 +0,0 @@
package dev.sheldan.abstracto.core.config;
import lombok.Getter;
import lombok.Setter;
import org.jetbrains.annotations.NotNull;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
@Component
@Getter
@Setter
@ConfigurationProperties(prefix = "abstracto")
public class DynamicKeyLoader {
private HashMap<String, String> postTargets = new HashMap<>();
private HashMap<String, String> emoteNames = new HashMap<>();
private HashMap<String, String> defaultEmotes = new HashMap<>();
public List<String> getPostTargetsAsList() {
return getHashMapAsList(postTargets);
}
public List<String> getEmoteNamesAsList() {
return getHashMapAsList(emoteNames);
}
@NotNull
private List<String> getHashMapAsList(HashMap<String, String> emoteNames) {
List<String> emotes = new ArrayList<>();
if (emoteNames == null || emoteNames.size() == 0) {
return emotes;
}
emoteNames.values().forEach(s -> emotes.addAll(Arrays.asList(s.split(","))));
return emotes;
}
}

View File

@@ -1,21 +0,0 @@
package dev.sheldan.abstracto.core.config;
import dev.sheldan.abstracto.core.models.config.FeaturePropertiesConfig;
import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.HashMap;
@Component
@Getter
@Setter
@ConfigurationProperties(prefix = "abstracto")
public class FeatureConfigLoader {
private HashMap<String, FeaturePropertiesConfig> features = new HashMap<>();
}

View File

@@ -1,26 +0,0 @@
package dev.sheldan.abstracto.core.config;
import dev.sheldan.abstracto.core.command.service.management.FeatureManagementService;
import dev.sheldan.abstracto.core.service.FeatureFlagService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;
// TODO runtime dependencies, features are required by commands, race condition
@Component
@Slf4j
public class FeatureListener {
@Autowired
private FeatureFlagService featureFlagService;
@Autowired
private FeatureManagementService featureManagementService;
@EventListener
public void handleContextRefreshEvent(ContextRefreshedEvent ctxStartEvt) {
// Do nothing yet, because of a race condition between features and commands
}
}

View File

@@ -1,26 +0,0 @@
package dev.sheldan.abstracto.core.listener;
import dev.sheldan.abstracto.core.service.management.DefaultConfigManagementService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@Component
public class CoreDefaultConfigListener {
@Autowired
private DefaultConfigManagementService defaultConfigManagementService;
@Value("${abstracto.prefix}")
private String prefix;
@EventListener
@Transactional
public void handleContextRefreshEvent(ContextRefreshedEvent ctxStartEvt) {
defaultConfigManagementService.createDefaultConfig("prefix", prefix);
}
}

View File

@@ -1,7 +1,9 @@
package dev.sheldan.abstracto.core.listener;
import dev.sheldan.abstracto.core.command.service.CommandManager;
import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.service.management.ConfigManagementService;
import dev.sheldan.abstracto.core.service.management.DefaultConfigManagementService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@@ -12,11 +14,11 @@ public class CoreServiceConfigListener implements ServerConfigListener {
@Autowired
private ConfigManagementService configManagementService;
@Value("${abstracto.prefix}")
private String prefix;
@Autowired
private DefaultConfigManagementService defaultConfigManagementService;
@Override
public void updateServerConfig(AServer server) {
configManagementService.createIfNotExists(server.getId(), "prefix", prefix);
configManagementService.createIfNotExists(server.getId(), CommandManager.PREFIX, defaultConfigManagementService.getDefaultConfig(CommandManager.PREFIX).getStringValue());
}
}

View File

@@ -1,12 +1,10 @@
package dev.sheldan.abstracto.core.listener;
import dev.sheldan.abstracto.core.command.service.management.FeatureManagementService;
import dev.sheldan.abstracto.core.config.FeatureConfigLoader;
import dev.sheldan.abstracto.core.models.config.FeaturePropertiesConfig;
import dev.sheldan.abstracto.core.models.database.AFeature;
import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.service.FeatureConfigService;
import dev.sheldan.abstracto.core.service.FeatureModeService;
import dev.sheldan.abstracto.core.service.management.DefaultFeatureFlagManagementService;
import dev.sheldan.abstracto.core.service.management.FeatureFlagManagementService;
import dev.sheldan.abstracto.core.service.management.FeatureModeManagementService;
import lombok.extern.slf4j.Slf4j;
@@ -14,13 +12,12 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
@Slf4j
public class FeatureFlagListener implements ServerConfigListener {
@Autowired
private FeatureConfigService featureFlagService;
@Autowired
private FeatureFlagManagementService service;
@@ -36,26 +33,25 @@ public class FeatureFlagListener implements ServerConfigListener {
@Autowired
private Environment environment;
@Autowired
private FeatureConfigLoader featureConfigLoader;
@Autowired
private FeatureFlagManagementService featureFlagManagementService;
@Autowired
private DefaultFeatureFlagManagementService defaultFeatureFlagManagementService;
@Override
public void updateServerConfig(AServer server) {
log.info("Setting up feature flags if necessary.");
featureFlagService.getAllFeatureConfigs().forEach(featureFlagKey -> {
List<String> defaultFeatureKeys = defaultFeatureFlagManagementService.getDefaultFeatureKeys();
defaultFeatureFlagManagementService.getAllDefaultFeatureFlags().forEach(featureFlagKey -> {
String featureKey = featureFlagKey.getFeature().getKey();
AFeature feature = featureManagementService.getFeature(featureKey);
if(featureConfigLoader.getFeatures().containsKey(featureKey)) {
FeaturePropertiesConfig featurePropertiesConfig = featureConfigLoader.getFeatures().get(featureKey);
if(defaultFeatureKeys.contains(featureKey)) {
if(service.getFeatureFlag(feature, server.getId()) == null) {
service.createFeatureFlag(feature, server.getId(), featurePropertiesConfig.getEnabled());
service.createFeatureFlag(feature, server.getId(), featureFlagKey.isEnabled());
}
if(featurePropertiesConfig.getDefaultMode() != null && !featureModeManagementService.featureModeSet(feature, server)) {
featureModeService.createMode(feature, server, featurePropertiesConfig.getDefaultMode());
if(featureFlagKey.getMode() != null && !featureModeManagementService.featureModeSet(feature, server)) {
featureModeService.createMode(feature, server, featureFlagKey.getMode());
}
} else {
log.warn("Feature {} was found as interface, but not in the properties configuration. It will not be setup.", featureKey);

View File

@@ -1,21 +0,0 @@
package dev.sheldan.abstracto.core.listener;
import dev.sheldan.abstracto.core.service.LockService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@Component
public class LockStartupListener {
@Autowired
private LockService lockService;
@EventListener
@Transactional
public void handleContextRefreshEvent(ContextRefreshedEvent ctxStartEvt) {
lockService.setupLocks();
}
}

View File

@@ -0,0 +1,10 @@
package dev.sheldan.abstracto.core.repository;
import dev.sheldan.abstracto.core.models.database.DefaultEmote;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface DefaultEmoteRepository extends JpaRepository<DefaultEmote, Long> {
DefaultEmote getByEmoteKey(String emoteKey);
}

View File

@@ -0,0 +1,9 @@
package dev.sheldan.abstracto.core.repository;
import dev.sheldan.abstracto.core.models.database.DefaultFeatureFlag;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface DefaultFeatureFlagRepository extends JpaRepository<DefaultFeatureFlag, Long> {
}

View File

@@ -0,0 +1,9 @@
package dev.sheldan.abstracto.core.repository;
import dev.sheldan.abstracto.core.models.database.DefaultPostTarget;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface DefaultPostTargetRepository extends JpaRepository<DefaultPostTarget, Long> {
}

View File

@@ -14,5 +14,5 @@ public interface LockRepository extends JpaRepository<ALock, Long> {
@Lock(LockModeType.PESSIMISTIC_WRITE)
@Query("select a from ALock a where a.id = :id")
ALock findArticleForRead(@Param("id") Long id);
ALock findALockForRead(@Param("id") Long id);
}

View File

@@ -1,10 +1,10 @@
package dev.sheldan.abstracto.core.service;
import dev.sheldan.abstracto.core.config.DynamicKeyLoader;
import dev.sheldan.abstracto.core.exception.EmoteNotDefinedException;
import dev.sheldan.abstracto.core.models.cache.CachedMessage;
import dev.sheldan.abstracto.core.models.cache.CachedReaction;
import dev.sheldan.abstracto.core.models.database.AEmote;
import dev.sheldan.abstracto.core.service.management.DefaultEmoteManagementService;
import dev.sheldan.abstracto.core.service.management.EmoteManagementService;
import lombok.extern.slf4j.Slf4j;
import net.dv8tion.jda.api.entities.Emote;
@@ -26,7 +26,7 @@ public class EmoteServiceBean implements EmoteService {
private EmoteManagementService emoteManagementService;
@Autowired
private DynamicKeyLoader keyLoader;
private DefaultEmoteManagementService defaultEmoteManagementService;
@Override
public boolean isEmoteUsableByBot(Emote emote) {
@@ -93,7 +93,7 @@ public class EmoteServiceBean implements EmoteService {
@Override
public String getDefaultEmote(String emoteKey) {
return keyLoader.getDefaultEmotes().get(emoteKey);
return defaultEmoteManagementService.getDefaultEmote(emoteKey).getName();
}
@Override

View File

@@ -1,7 +1,6 @@
package dev.sheldan.abstracto.core.service;
import dev.sheldan.abstracto.core.command.models.TableLocks;
import dev.sheldan.abstracto.core.model.database.ALock;
import dev.sheldan.abstracto.core.repository.LockRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -15,19 +14,8 @@ public class LockServiceBean implements LockService {
@Override
public void lockTable(TableLocks toLock) {
int ordinal = toLock.ordinal();
lockRepository.findArticleForRead((long) ordinal);
lockRepository.findALockForRead((long) ordinal);
}
@Override
public void setupLocks() {
for (TableLocks lo :TableLocks.values()) {
if(!lockRepository.existsById((long)lo.ordinal())) {
ALock build = ALock
.builder()
.id((long) lo.ordinal())
.build();
lockRepository.save(build);
}
}
}
}

View File

@@ -1,6 +1,5 @@
package dev.sheldan.abstracto.core.service;
import dev.sheldan.abstracto.core.config.DynamicKeyLoader;
import dev.sheldan.abstracto.core.config.FeatureConfig;
import dev.sheldan.abstracto.core.config.PostTargetEnum;
import dev.sheldan.abstracto.core.exception.ChannelNotFoundException;
@@ -8,6 +7,7 @@ import dev.sheldan.abstracto.core.exception.GuildException;
import dev.sheldan.abstracto.core.exception.PostTargetNotFoundException;
import dev.sheldan.abstracto.core.exception.PostTargetNotValidException;
import dev.sheldan.abstracto.core.models.database.AServer;
import dev.sheldan.abstracto.core.service.management.DefaultPostTargetManagementService;
import dev.sheldan.abstracto.core.service.management.PostTargetManagement;
import dev.sheldan.abstracto.core.models.database.PostTarget;
import dev.sheldan.abstracto.templating.model.MessageToSend;
@@ -36,9 +36,6 @@ public class PostTargetServiceBean implements PostTargetService {
@Autowired
private BotService botService;
@Autowired
private DynamicKeyLoader dynamicKeyLoader;
@Autowired
private ChannelService channelService;
@@ -48,6 +45,9 @@ public class PostTargetServiceBean implements PostTargetService {
@Autowired
private FeatureConfigService featureConfigService;
@Autowired
private DefaultPostTargetManagementService defaultPostTargetManagementService;
@Override
public CompletableFuture<Message> sendTextInPostTarget(String text, PostTarget target) {
return channelService.sendTextToAChannel(text, target.getChannelReference());
@@ -183,7 +183,7 @@ public class PostTargetServiceBean implements PostTargetService {
public void throwIfPostTargetIsNotDefined(PostTargetEnum name, Long serverId) {
PostTarget postTarget = postTargetManagement.getPostTarget(name.getKey(), serverId);
if(postTarget == null) {
throw new PostTargetNotValidException(name.getKey(), dynamicKeyLoader.getPostTargetsAsList());
throw new PostTargetNotValidException(name.getKey(), defaultPostTargetManagementService.getDefaultPostTargetKeys());
}
}
@@ -195,7 +195,7 @@ public class PostTargetServiceBean implements PostTargetService {
@Override
public boolean validPostTarget(String name) {
List<String> possiblePostTargets = dynamicKeyLoader.getPostTargetsAsList();
List<String> possiblePostTargets = defaultPostTargetManagementService.getDefaultPostTargetKeys();
return possiblePostTargets.contains(name);
}
@@ -206,7 +206,7 @@ public class PostTargetServiceBean implements PostTargetService {
@Override
public List<String> getAvailablePostTargets() {
return dynamicKeyLoader.getPostTargetsAsList();
return defaultPostTargetManagementService.getDefaultPostTargetKeys();
}
@Override

View File

@@ -0,0 +1,31 @@
package dev.sheldan.abstracto.core.service.management;
import dev.sheldan.abstracto.core.models.database.DefaultEmote;
import dev.sheldan.abstracto.core.repository.DefaultEmoteRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.stream.Collectors;
@Component
public class DefaultEmoteManagementServiceBean implements DefaultEmoteManagementService {
@Autowired
private DefaultEmoteRepository repository;
@Override
public DefaultEmote getDefaultEmote(String key) {
return repository.getByEmoteKey(key);
}
@Override
public List<DefaultEmote> getAllDefaultEmotes() {
return repository.findAll();
}
@Override
public List<String> getDefaultEmoteNames() {
return getAllDefaultEmotes().stream().map(DefaultEmote::getEmoteKey).collect(Collectors.toList());
}
}

View File

@@ -0,0 +1,26 @@
package dev.sheldan.abstracto.core.service.management;
import dev.sheldan.abstracto.core.models.database.DefaultFeatureFlag;
import dev.sheldan.abstracto.core.repository.DefaultFeatureFlagRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.stream.Collectors;
@Component
public class DefaultFeatureFlagManagementServiceBean implements DefaultFeatureFlagManagementService{
@Autowired
private DefaultFeatureFlagRepository repository;
@Override
public List<String> getDefaultFeatureKeys() {
return repository.findAll().stream().map(defaultFeatureFlag -> defaultFeatureFlag.getFeature().getKey()).collect(Collectors.toList());
}
@Override
public List<DefaultFeatureFlag> getAllDefaultFeatureFlags() {
return repository.findAll();
}
}

View File

@@ -0,0 +1,26 @@
package dev.sheldan.abstracto.core.service.management;
import dev.sheldan.abstracto.core.models.database.DefaultPostTarget;
import dev.sheldan.abstracto.core.repository.DefaultPostTargetRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.stream.Collectors;
@Component
public class DefaultPostTargetManagementServiceBean implements DefaultPostTargetManagementService {
@Autowired
private DefaultPostTargetRepository repository;
@Override
public List<DefaultPostTarget> getAllDefaultPostTargets() {
return repository.findAll();
}
@Override
public List<String> getDefaultPostTargetKeys() {
return getAllDefaultPostTargets().stream().map(DefaultPostTarget::getName).collect(Collectors.toList());
}
}

View File

@@ -1,6 +1,5 @@
package dev.sheldan.abstracto.core.service.management;
import dev.sheldan.abstracto.core.config.DynamicKeyLoader;
import dev.sheldan.abstracto.core.exception.EmoteNotFoundException;
import dev.sheldan.abstracto.core.models.database.AEmote;
import dev.sheldan.abstracto.core.models.database.AServer;
@@ -22,7 +21,7 @@ public class EmoteManagementServiceBean implements EmoteManagementService {
private ServerManagementService serverManagementService;
@Autowired
private DynamicKeyLoader dynamicKeyLoader;
private DefaultEmoteManagementService defaultEmoteManagementService;
@Override
public Optional<AEmote> loadEmote(Long id) {
@@ -146,7 +145,7 @@ public class EmoteManagementServiceBean implements EmoteManagementService {
}
private void validateEmoteName(String name) {
List<String> possibleEmotes = dynamicKeyLoader.getEmoteNamesAsList();
List<String> possibleEmotes = defaultEmoteManagementService.getDefaultEmoteNames();
if(!possibleEmotes.contains(name)) {
throw new EmoteNotFoundException(name, possibleEmotes);
}

View File

@@ -1,6 +1,5 @@
package dev.sheldan.abstracto.core.service.management;
import dev.sheldan.abstracto.core.config.DynamicKeyLoader;
import dev.sheldan.abstracto.core.exception.ChannelNotFoundException;
import dev.sheldan.abstracto.core.exception.PostTargetNotValidException;
import dev.sheldan.abstracto.core.models.database.AChannel;
@@ -29,15 +28,15 @@ public class PostTargetManagementBean implements PostTargetManagement {
private ServerManagementService serverManagementService;
@Autowired
private DynamicKeyLoader dynamicKeyLoader;
private PostTargetService postTargetService;
@Autowired
private PostTargetService postTargetService;
private DefaultPostTargetManagementService defaultPostTargetManagementService;
@Override
public PostTarget createPostTarget(String name, AServer server, AChannel targetChannel) {
if(!postTargetService.validPostTarget(name)) {
throw new PostTargetNotValidException(name, dynamicKeyLoader.getPostTargetsAsList());
throw new PostTargetNotValidException(name, defaultPostTargetManagementService.getDefaultPostTargetKeys());
}
log.info("Creating post target {} pointing towards {}", name, targetChannel);
PostTarget build = PostTarget.builder().name(name).channelReference(targetChannel).serverReference(server).build();

View File

@@ -2,10 +2,4 @@ abstracto.startup.synchronize=true
abstracto.parameter.lowerBound=50
abstracto.features.core.enabled=true
abstracto.prefix=!
abstracto.eventWaiter.threads=10
abstracto.emoteNames.confirmation=confirmation,denial
abstracto.defaultEmotes.confirmation=\u2705
abstracto.defaultEmotes.denial=\u274c

View File

@@ -1,3 +0,0 @@
abstracto.emoteNames.postReaction=warnReaction,successReaction
abstracto.defaultEmotes.warnReaction=\u26A0\uFE0F
abstracto.defaultEmotes.successReaction=\u2705

View File

@@ -1,6 +1,6 @@
spring.jpa.show-sql = false
spring.jpa.hibernate.ddl-auto = update
spring.jpa.hibernate.ddl-auto = none
spring.jpa.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.naming_strategy = org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.format_sql = false

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<configuration scan="true" scanPeriod="30 seconds">
<property name="LOG_PATH" value="logs"/>
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<encoder>

View File

@@ -0,0 +1,11 @@
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:pro="http://www.liquibase.org/xml/ns/pro"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog ../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext ../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/pro ../dbchangelog-3.8.xsd" >
<include file="core-tables/tables.xml" relativeToChangelogFile="true"/>
<include file="core-seedData/data.xml" relativeToChangelogFile="true"/>
</databaseChangeLog>

View File

@@ -0,0 +1,179 @@
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:pro="http://www.liquibase.org/xml/ns/pro"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/pro ../../dbchangelog-3.8.xsd" >
<property name="coreFeature" value="(SELECT id FROM feature WHERE key = 'core')"/>
<property name="helpModule" value="(SELECT id FROM module WHERE name = 'support')"/>
<property name="utilityModule" value="(SELECT id FROM module WHERE name = 'utility')"/>
<property name="channelsModule" value="(SELECT id FROM module WHERE name = 'channels')"/>
<property name="configModule" value="(SELECT id FROM module WHERE name = 'config')"/>
<property name="today" value="(SELECT NOW())"/>
<changeSet author="Sheldan" id="core-help-commands">
<insert tableName="command">
<column name="name" value="help"/>
<column name="module_id" valueComputed="${helpModule}"/>
<column name="feature_id" valueComputed="${coreFeature}"/>
<column name="created" valueComputed="${today}"/>
</insert>
</changeSet>
<changeSet author="Sheldan" id="core-utility-commands" >
<insert tableName="command">
<column name="name" value="ping"/>
<column name="module_id" valueComputed="${utilityModule}"/>
<column name="feature_id" valueComputed="${coreFeature}"/>
<column name="created" valueComputed="${today}"/>
</insert>
<insert tableName="command">
<column name="name" value="echo"/>
<column name="module_id" valueComputed="${utilityModule}"/>
<column name="feature_id" valueComputed="${coreFeature}"/>
<column name="created" valueComputed="${today}"/>
</insert>
<insert tableName="command">
<column name="name" value="setEmote"/>
<column name="module_id" valueComputed="${utilityModule}"/>
<column name="feature_id" valueComputed="${coreFeature}"/>
<column name="created" valueComputed="${today}"/>
</insert>
</changeSet>
<changeSet author="Sheldan" id="core-channels-commands" >
<insert tableName="command">
<column name="name" value="addToChannelGroup"/>
<column name="module_id" valueComputed="${channelsModule}"/>
<column name="feature_id" valueComputed="${coreFeature}"/>
<column name="created" valueComputed="${today}"/>
</insert>
<insert tableName="command">
<column name="name" value="createChannelGroup"/>
<column name="module_id" valueComputed="${channelsModule}"/>
<column name="feature_id" valueComputed="${coreFeature}"/>
<column name="created" valueComputed="${today}"/>
</insert>
<insert tableName="command">
<column name="name" value="deleteChannelGroup"/>
<column name="module_id" valueComputed="${channelsModule}"/>
<column name="feature_id" valueComputed="${coreFeature}"/>
<column name="created" valueComputed="${today}"/>
</insert>
<insert tableName="command">
<column name="name" value="disableCommand"/>
<column name="module_id" valueComputed="${channelsModule}"/>
<column name="feature_id" valueComputed="${coreFeature}"/>
<column name="created" valueComputed="${today}"/>
</insert>
<insert tableName="command">
<column name="name" value="enableCommand"/>
<column name="module_id" valueComputed="${channelsModule}"/>
<column name="feature_id" valueComputed="${coreFeature}"/>
<column name="created" valueComputed="${today}"/>
</insert>
<insert tableName="command">
<column name="name" value="listChannelGroups"/>
<column name="module_id" valueComputed="${channelsModule}"/>
<column name="feature_id" valueComputed="${coreFeature}"/>
<column name="created" valueComputed="${today}"/>
</insert>
<insert tableName="command">
<column name="name" value="posttarget"/>
<column name="module_id" valueComputed="${channelsModule}"/>
<column name="feature_id" valueComputed="${coreFeature}"/>
<column name="created" valueComputed="${today}"/>
</insert>
<insert tableName="command">
<column name="name" value="removeFromChannelGroup"/>
<column name="module_id" valueComputed="${channelsModule}"/>
<column name="feature_id" valueComputed="${coreFeature}"/>
<column name="created" valueComputed="${today}"/>
</insert>
</changeSet>
<changeSet author="Sheldan" id="core-config-commands" >
<insert tableName="command">
<column name="name" value="clearCache"/>
<column name="module_id" valueComputed="${configModule}"/>
<column name="feature_id" valueComputed="${coreFeature}"/>
<column name="created" valueComputed="${today}"/>
</insert>
<insert tableName="command">
<column name="name" value="setConfig"/>
<column name="module_id" valueComputed="${configModule}"/>
<column name="feature_id" valueComputed="${coreFeature}"/>
<column name="created" valueComputed="${today}"/>
</insert>
<insert tableName="command">
<column name="name" value="setPrefix"/>
<column name="module_id" valueComputed="${configModule}"/>
<column name="feature_id" valueComputed="${coreFeature}"/>
<column name="created" valueComputed="${today}"/>
</insert>
<insert tableName="command">
<column name="name" value="setup"/>
<column name="module_id" valueComputed="${configModule}"/>
<column name="feature_id" valueComputed="${coreFeature}"/>
<column name="created" valueComputed="${today}"/>
</insert>
<insert tableName="command">
<column name="name" value="allow"/>
<column name="module_id" valueComputed="${configModule}"/>
<column name="feature_id" valueComputed="${coreFeature}"/>
<column name="created" valueComputed="${today}"/>
</insert>
<insert tableName="command">
<column name="name" value="allowRole"/>
<column name="module_id" valueComputed="${configModule}"/>
<column name="feature_id" valueComputed="${coreFeature}"/>
<column name="created" valueComputed="${today}"/>
</insert>
<insert tableName="command">
<column name="name" value="disable"/>
<column name="module_id" valueComputed="${configModule}"/>
<column name="feature_id" valueComputed="${coreFeature}"/>
<column name="created" valueComputed="${today}"/>
</insert>
<insert tableName="command">
<column name="name" value="disAllowRole"/>
<column name="module_id" valueComputed="${configModule}"/>
<column name="feature_id" valueComputed="${coreFeature}"/>
<column name="created" valueComputed="${today}"/>
</insert>
<insert tableName="command">
<column name="name" value="enable"/>
<column name="module_id" valueComputed="${configModule}"/>
<column name="feature_id" valueComputed="${coreFeature}"/>
<column name="created" valueComputed="${today}"/>
</insert>
<insert tableName="command">
<column name="name" value="features"/>
<column name="module_id" valueComputed="${configModule}"/>
<column name="feature_id" valueComputed="${coreFeature}"/>
<column name="created" valueComputed="${today}"/>
</insert>
<insert tableName="command">
<column name="name" value="makeAffected"/>
<column name="module_id" valueComputed="${configModule}"/>
<column name="feature_id" valueComputed="${coreFeature}"/>
<column name="created" valueComputed="${today}"/>
</insert>
<insert tableName="command">
<column name="name" value="makeImmune"/>
<column name="module_id" valueComputed="${configModule}"/>
<column name="feature_id" valueComputed="${coreFeature}"/>
<column name="created" valueComputed="${today}"/>
</insert>
<insert tableName="command">
<column name="name" value="restrict"/>
<column name="module_id" valueComputed="${configModule}"/>
<column name="feature_id" valueComputed="${coreFeature}"/>
<column name="created" valueComputed="${today}"/>
</insert>
<insert tableName="command">
<column name="name" value="setMode"/>
<column name="module_id" valueComputed="${configModule}"/>
<column name="feature_id" valueComputed="${coreFeature}"/>
<column name="created" valueComputed="${today}"/>
</insert>
</changeSet>
</databaseChangeLog>

View File

@@ -0,0 +1,16 @@
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:pro="http://www.liquibase.org/xml/ns/pro"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/pro ../../dbchangelog-3.8.xsd" >
<include file="feature.xml" relativeToChangelogFile="true"/>
<include file="module.xml" relativeToChangelogFile="true"/>
<include file="command.xml" relativeToChangelogFile="true"/>
<include file="default_config.xml" relativeToChangelogFile="true"/>
<include file="lock.xml" relativeToChangelogFile="true"/>
<include file="default_feature_flag.xml" relativeToChangelogFile="true"/>
<include file="default_emote.xml" relativeToChangelogFile="true"/>
</databaseChangeLog>

View File

@@ -0,0 +1,18 @@
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:pro="http://www.liquibase.org/xml/ns/pro"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/pro ../../dbchangelog-3.8.xsd" >
<property name="today" value="(SELECT NOW())"/>
<changeSet author="Sheldan" id="prefix-insert">
<insert tableName="default_config">
<column name="string_value" value="!"/>
<column name="name" value="prefix"/>
<column name="created" valueComputed="${today}"/>
</insert>
</changeSet>
</databaseChangeLog>

View File

@@ -0,0 +1,32 @@
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:pro="http://www.liquibase.org/xml/ns/pro"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/pro ../../dbchangelog-3.8.xsd" >
<property name="today" value="(SELECT NOW())"/>
<changeSet author="Sheldan" id="core_default_emote-insert">
<insert tableName="default_emote">
<column name="emote_key" value="warnReaction"/>
<column name="name" value="⚠️"/>
<column name="created" valueComputed="${today}"/>
</insert>
<insert tableName="default_emote">
<column name="emote_key" value="successReaction"/>
<column name="name" value="✅"/>
<column name="created" valueComputed="${today}"/>
</insert>
<insert tableName="default_emote">
<column name="emote_key" value="confirmation"/>
<column name="name" value="✅"/>
<column name="created" valueComputed="${today}"/>
</insert>
<insert tableName="default_emote">
<column name="emote_key" value="denial"/>
<column name="name" value="❌"/>
<column name="created" valueComputed="${today}"/>
</insert>
</changeSet>
</databaseChangeLog>

View File

@@ -0,0 +1,18 @@
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:pro="http://www.liquibase.org/xml/ns/pro"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/pro ../../dbchangelog-3.8.xsd" >
<property name="coreFeature" value="(SELECT id FROM feature WHERE key = 'core')"/>
<property name="today" value="(SELECT NOW())"/>
<changeSet author="Sheldan" id="core_default_feature_flag-insertion">
<insert tableName="default_feature_flag">
<column name="enabled" value="true"/>
<column name="feature_id" valueComputed="${coreFeature}" />
<column name="created" valueComputed="${today}"/>
</insert>
</changeSet>
</databaseChangeLog>

View File

@@ -0,0 +1,16 @@
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:pro="http://www.liquibase.org/xml/ns/pro"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/pro ../../dbchangelog-3.8.xsd" >
<property name="today" value="(SELECT NOW())"/>
<changeSet author="Sheldan" id="feature-insertion">
<insert tableName="feature">
<column name="key" value="core"/>
<column name="created" valueComputed="${today}"/>
</insert>
</changeSet>
</databaseChangeLog>

View File

@@ -0,0 +1,14 @@
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:pro="http://www.liquibase.org/xml/ns/pro"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/pro ../../dbchangelog-3.8.xsd" >
<changeSet author="Sheldan" id="lock-insertion">
<insert tableName="lock">
<column name="id" value="0"/>
</insert>
</changeSet>
</databaseChangeLog>

View File

@@ -0,0 +1,28 @@
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:pro="http://www.liquibase.org/xml/ns/pro"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/pro ../../dbchangelog-3.8.xsd" >
<property name="today" value="(SELECT NOW())"/>
<changeSet author="Sheldan" id="core-module-insertion">
<insert tableName="module">
<column name="name" value="support"/>
<column name="created" valueComputed="${today}"/>
</insert>
<insert tableName="module">
<column name="name" value="utility"/>
<column name="created" valueComputed="${today}"/>
</insert>
<insert tableName="module">
<column name="name" value="channels"/>
<column name="created" valueComputed="${today}"/>
</insert>
<insert tableName="module">
<column name="name" value="config"/>
<column name="created" valueComputed="${today}"/>
</insert>
</changeSet>
</databaseChangeLog>

View File

@@ -0,0 +1,25 @@
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:pro="http://www.liquibase.org/xml/ns/pro"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/pro ../../dbchangelog-3.8.xsd" >
<changeSet author="Sheldan" id="channel-table">
<createTable tableName="channel">
<column name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="channel_pkey"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="deleted" type="BOOLEAN"/>
<column name="type" type="VARCHAR(255)"/>
<column name="server_id" type="BIGINT">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet author="Sheldan" id="channel-fk_channel_server">
<addForeignKeyConstraint baseColumnNames="server_id" baseTableName="channel" constraintName="fk_channel_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
</changeSet>
</databaseChangeLog>

View File

@@ -0,0 +1,60 @@
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:pro="http://www.liquibase.org/xml/ns/pro"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/pro ../../dbchangelog-3.8.xsd" >
<changeSet author="Sheldan" id="channel_group-table">
<createTable tableName="channel_group">
<column autoIncrement="true" name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="channel_group_pkey"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="group_name" type="VARCHAR(255)"/>
<column name="group_server" type="BIGINT">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet author="Sheldan" id="channel_in_group-table">
<createTable tableName="channel_in_group">
<column name="group_id" type="BIGINT">
<constraints nullable="false"/>
</column>
<column name="channel_id" type="BIGINT">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet author="Sheldan" id="channel_group_command-table">
<createTable tableName="channel_group_command">
<column autoIncrement="true" name="command_in_group_id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="channel_group_command_pkey"/>
</column>
<column name="enabled" type="BOOLEAN"/>
<column name="command_id" type="BIGINT">
<constraints nullable="false"/>
</column>
<column name="group_id" type="BIGINT">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet author="Sheldan" id="channel_in_group-fk_channel_in_group_channel">
<addForeignKeyConstraint baseColumnNames="channel_id" baseTableName="channel_in_group" constraintName="fk_channel_in_group_channel" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="channel" validate="true"/>
</changeSet>
<changeSet author="Sheldan" id="channel_group_command-fk_channel_group_command_channel_group">
<addForeignKeyConstraint baseColumnNames="group_id" baseTableName="channel_group_command" constraintName="fk_channel_group_command_channel_group" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="channel_group" validate="true"/>
</changeSet>
<changeSet author="Sheldan" id="channel_in_group-fk_channel_in_group_group">
<addForeignKeyConstraint baseColumnNames="group_id" baseTableName="channel_in_group" constraintName="fk_channel_in_group_group" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="channel_group" validate="true"/>
</changeSet>
<changeSet author="Sheldan" id="channel_group-fk_channel_group_server">
<addForeignKeyConstraint baseColumnNames="group_server" baseTableName="channel_group" constraintName="fk_channel_group_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
</changeSet>
<changeSet author="Sheldan" id="channel_group_command-fk_channel_group_command_command">
<addForeignKeyConstraint baseColumnNames="command_id" baseTableName="channel_group_command" constraintName="fk_channel_group_command_command" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="command" validate="true"/>
</changeSet>
</databaseChangeLog>

View File

@@ -0,0 +1,83 @@
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:pro="http://www.liquibase.org/xml/ns/pro"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/pro ../../dbchangelog-3.8.xsd" >
<changeSet author="Sheldan" id="command-table">
<createTable tableName="command">
<column autoIncrement="true" name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="command_pkey"/>
</column>
<column name="name" type="VARCHAR(255)"/>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="feature_id" type="BIGINT">
<constraints nullable="false"/>
</column>
<column name="module_id" type="BIGINT">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet author="Sheldan" id="command_in_server-table">
<createTable tableName="command_in_server">
<column autoIncrement="true" name="command_in_server_id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="command_in_server_pkey"/>
</column>
<column name="restricted" type="BOOLEAN"/>
<column name="command_reference" type="BIGINT">
<constraints nullable="false"/>
</column>
<column name="server_reference" type="BIGINT">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet author="Sheldan" id="command_in_server_immune_roles-table">
<createTable tableName="command_in_server_immune_roles">
<column name="command_in_server_command_in_server_id" type="BIGINT">
<constraints nullable="false"/>
</column>
<column name="immune_roles_id" type="BIGINT">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet author="Sheldan" id="command_in_server_allowed_roles-table">
<createTable tableName="command_in_server_allowed_roles">
<column name="command_in_server_command_in_server_id" type="BIGINT">
<constraints nullable="false"/>
</column>
<column name="allowed_roles_id" type="BIGINT">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet author="Sheldan" id="command-fk_command_feature">
<addForeignKeyConstraint baseColumnNames="feature_id" baseTableName="command" constraintName="fk_command_feature" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="feature" validate="true"/>
</changeSet>
<changeSet author="Sheldan" id="command_in_server-command_in_server_immune_roles">
<addForeignKeyConstraint baseColumnNames="command_in_server_command_in_server_id" baseTableName="command_in_server_immune_roles" constraintName="fk_command_immune_role" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="command_in_server_id" referencedTableName="command_in_server" validate="true"/>
</changeSet>
<changeSet author="Sheldan" id="command_in_server-command_in_server_allowed_roles">
<addForeignKeyConstraint baseColumnNames="command_in_server_command_in_server_id" baseTableName="command_in_server_allowed_roles" constraintName="fk_command_allowed_role" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="command_in_server_id" referencedTableName="command_in_server" validate="true"/>
</changeSet>
<changeSet author="Sheldan" id="command_in_server_immune_roles-command_in_server_allowed_roles">
<addForeignKeyConstraint baseColumnNames="allowed_roles_id" baseTableName="command_in_server_allowed_roles" constraintName="fk_role_allowed_role" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="role" validate="true"/>
</changeSet>
<changeSet author="Sheldan" id="command-fk_command_module">
<addForeignKeyConstraint baseColumnNames="module_id" baseTableName="command" constraintName="fk_command_module" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="module" validate="true"/>
</changeSet>
<changeSet author="Sheldan" id="command_in_server-fk_command_command">
<addForeignKeyConstraint baseColumnNames="command_reference" baseTableName="command_in_server" constraintName="fk_command_command" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="command" validate="true"/>
</changeSet>
<changeSet author="Sheldan" id="command_in_server_allowed_roles-fk_immune_role_role">
<addForeignKeyConstraint baseColumnNames="immune_roles_id" baseTableName="command_in_server_immune_roles" constraintName="fk_immune_role_role" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="role" validate="true"/>
</changeSet>
<changeSet author="Sheldan" id="command_in_server-fk_command_server">
<addForeignKeyConstraint baseColumnNames="server_reference" baseTableName="command_in_server" constraintName="fk_command_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
</changeSet>
</databaseChangeLog>

View File

@@ -0,0 +1,22 @@
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:pro="http://www.liquibase.org/xml/ns/pro"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/pro ../../dbchangelog-3.8.xsd" >
<changeSet author="Sheldan" id="default_config-table">
<createTable tableName="default_config">
<column autoIncrement="true" name="id" type="INTEGER">
<constraints nullable="false" primaryKey="true" primaryKeyName="default_config_pkey"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="double_value" type="FLOAT8"/>
<column name="long_value" type="BIGINT"/>
<column name="name" type="VARCHAR(255)"/>
<column name="string_value" type="VARCHAR(255)"/>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
</createTable>
</changeSet>
</databaseChangeLog>

View File

@@ -0,0 +1,20 @@
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:pro="http://www.liquibase.org/xml/ns/pro"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/pro ../../dbchangelog-3.8.xsd" >
<changeSet author="Sheldan" id="default_emote-table">
<createTable tableName="default_emote">
<column autoIncrement="true" name="id" type="INTEGER">
<constraints nullable="false" primaryKey="true" primaryKeyName="default_emote_pkey"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="emote_key" type="VARCHAR(255)"/>
<column name="name" type="VARCHAR(255)"/>
</createTable>
</changeSet>
</databaseChangeLog>

View File

@@ -0,0 +1,28 @@
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:pro="http://www.liquibase.org/xml/ns/pro"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/pro ../../dbchangelog-3.8.xsd" >
<changeSet author="Sheldan" id="default_feature_flag-table">
<createTable tableName="default_feature_flag">
<column autoIncrement="true" name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="default_feature_flag_pkey"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="enabled" type="BOOLEAN">
<constraints nullable="false"/>
</column>
<column name="mode" type="VARCHAR(255)"/>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="feature_id" type="BIGINT">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet author="Sheldan" id="default_feature_flag-fk_default_feature_flag_feature">
<addForeignKeyConstraint baseColumnNames="feature_id" baseTableName="default_feature_flag" constraintName="fk_default_feature_flag_feature" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="feature" validate="true"/>
</changeSet>
</databaseChangeLog>

View File

@@ -0,0 +1,19 @@
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:pro="http://www.liquibase.org/xml/ns/pro"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/pro ../../dbchangelog-3.8.xsd" >
<changeSet author="Sheldan" id="default_posttarget-table">
<createTable tableName="default_posttarget">
<column autoIncrement="true" name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="default_posttarget_pkey"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="name" type="VARCHAR(255)"/>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
</createTable>
</changeSet>
</databaseChangeLog>

View File

@@ -0,0 +1,29 @@
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:pro="http://www.liquibase.org/xml/ns/pro"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/pro ../../dbchangelog-3.8.xsd" >
<changeSet author="Sheldan" id="emote-table">
<createTable tableName="emote">
<column autoIncrement="true" name="id" type="INTEGER">
<constraints nullable="false" primaryKey="true" primaryKeyName="emote_pkey"/>
</column>
<column name="animated" type="BOOLEAN"/>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="custom" type="BOOLEAN"/>
<column name="emote_id" type="BIGINT"/>
<column name="emote_key" type="VARCHAR(255)"/>
<column name="name" type="VARCHAR(255)"/>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="emote_server_id" type="BIGINT">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet author="Sheldan" id="emote-fk_emote_server">
<addForeignKeyConstraint baseColumnNames="emote_server_id" baseTableName="emote" constraintName="fk_emote_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
</changeSet>
</databaseChangeLog>

View File

@@ -0,0 +1,19 @@
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:pro="http://www.liquibase.org/xml/ns/pro"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/pro ../../dbchangelog-3.8.xsd" >
<changeSet author="Sheldan" id="feature-table">
<createTable tableName="feature">
<column autoIncrement="true" name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="feature_pkey"/>
</column>
<column name="key" type="VARCHAR(255)"/>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
</createTable>
</changeSet>
</databaseChangeLog>

View File

@@ -0,0 +1,33 @@
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:pro="http://www.liquibase.org/xml/ns/pro"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/pro ../../dbchangelog-3.8.xsd" >
<changeSet author="Sheldan" id="feature_flag-table">
<createTable tableName="feature_flag">
<column autoIncrement="true" name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="feature_flag_pkey"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="enabled" type="BOOLEAN">
<constraints nullable="false"/>
</column>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="feature_id" type="BIGINT">
<constraints nullable="false"/>
</column>
<column name="server_id" type="BIGINT">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet author="Sheldan" id="feature_flag-fk_feature_flag_feature">
<addForeignKeyConstraint baseColumnNames="feature_id" baseTableName="feature_flag" constraintName="fk_feature_flag_feature" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="feature" validate="true"/>
</changeSet>
<changeSet author="Sheldan" id="feature_flag-fk_feature_flag_server">
<addForeignKeyConstraint baseColumnNames="server_id" baseTableName="feature_flag" constraintName="fk_feature_flag_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
</changeSet>
</databaseChangeLog>

View File

@@ -0,0 +1,25 @@
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:pro="http://www.liquibase.org/xml/ns/pro"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/pro ../../dbchangelog-3.8.xsd" >
<changeSet author="Sheldan" id="feature_mode-table">
<createTable tableName="feature_mode">
<column autoIncrement="true" name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="feature_mode_pkey"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="mode" type="VARCHAR(255)"/>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="feature_flag_id" type="BIGINT">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet author="Sheldan" id="feature_mode-fk_feature_mode_flag">
<addForeignKeyConstraint baseColumnNames="feature_flag_id" baseTableName="feature_mode" constraintName="fk_feature_mode_flag" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="feature_flag" validate="true"/>
</changeSet>
</databaseChangeLog>

View File

@@ -0,0 +1,16 @@
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:pro="http://www.liquibase.org/xml/ns/pro"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/pro ../../dbchangelog-3.8.xsd" >
<changeSet author="Sheldan" id="lock-table">
<createTable tableName="lock">
<column name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="lock_pkey"/>
</column>
</createTable>
</changeSet>
</databaseChangeLog>

View File

@@ -0,0 +1,19 @@
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:pro="http://www.liquibase.org/xml/ns/pro"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/pro ../../dbchangelog-3.8.xsd" >
<changeSet author="Sheldan" id="module-table">
<createTable tableName="module">
<column autoIncrement="true" name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="module_pkey"/>
</column>
<column name="name" type="VARCHAR(255)"/>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
</createTable>
</changeSet>
</databaseChangeLog>

View File

@@ -0,0 +1,31 @@
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:pro="http://www.liquibase.org/xml/ns/pro"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/pro ../../dbchangelog-3.8.xsd" >
<changeSet author="Sheldan" id="posttarget-table">
<createTable tableName="posttarget">
<column autoIncrement="true" name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="posttarget_pkey"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="name" type="VARCHAR(255)"/>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="channel_id" type="BIGINT">
<constraints nullable="false"/>
</column>
<column name="server_id" type="BIGINT">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet author="Sheldan" id="posttarget-fk_posttarget_channel">
<addForeignKeyConstraint baseColumnNames="channel_id" baseTableName="posttarget" constraintName="fk_posttarget_channel" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="channel" validate="true"/>
</changeSet>
<changeSet author="Sheldan" id="posttarget-fk_posttarget_server">
<addForeignKeyConstraint baseColumnNames="server_id" baseTableName="posttarget" constraintName="fk_posttarget_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
</changeSet>
</databaseChangeLog>

View File

@@ -0,0 +1,25 @@
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:pro="http://www.liquibase.org/xml/ns/pro"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/pro ../../dbchangelog-3.8.xsd" >
<changeSet author="Sheldan" id="role-table">
<createTable tableName="role">
<column name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="role_pkey"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="deleted" type="BOOLEAN"/>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="role_server_id" type="BIGINT">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet author="Sheldan" id="role-fk_role_server">
<addForeignKeyConstraint baseColumnNames="role_server_id" baseTableName="role" constraintName="fk_role_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
</changeSet>
</databaseChangeLog>

View File

@@ -0,0 +1,18 @@
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:pro="http://www.liquibase.org/xml/ns/pro"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/pro ../../dbchangelog-3.8.xsd" >
<changeSet author="Sheldan" id="server-table">
<createTable tableName="server">
<column name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="server_pkey"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
</createTable>
</changeSet>
</databaseChangeLog>

View File

@@ -0,0 +1,28 @@
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:pro="http://www.liquibase.org/xml/ns/pro"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/pro ../../dbchangelog-3.8.xsd" >
<changeSet author="Sheldan" id="system_config-table">
<createTable tableName="system_config">
<column autoIncrement="true" name="id" type="INTEGER">
<constraints nullable="false" primaryKey="true" primaryKeyName="system_config_pkey"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="double_value" type="FLOAT8"/>
<column name="long_value" type="BIGINT"/>
<column name="name" type="VARCHAR(255)"/>
<column name="string_value" type="VARCHAR(255)"/>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="server_id" type="BIGINT">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet author="Sheldan" id="system_config-fk_config_server">
<addForeignKeyConstraint baseColumnNames="server_id" baseTableName="system_config" constraintName="fk_config_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
</changeSet>
</databaseChangeLog>

View File

@@ -0,0 +1,27 @@
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:pro="http://www.liquibase.org/xml/ns/pro"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/pro ../../dbchangelog-3.8.xsd" >
<include file="server.xml" relativeToChangelogFile="true"/>
<include file="channel.xml" relativeToChangelogFile="true"/>
<include file="default_post_target.xml" relativeToChangelogFile="true"/>
<include file="post_target.xml" relativeToChangelogFile="true"/>
<include file="default_config.xml" relativeToChangelogFile="true"/>
<include file="default_emote.xml" relativeToChangelogFile="true"/>
<include file="emote.xml" relativeToChangelogFile="true"/>
<include file="feature.xml" relativeToChangelogFile="true"/>
<include file="role.xml" relativeToChangelogFile="true"/>
<include file="module.xml" relativeToChangelogFile="true"/>
<include file="command.xml" relativeToChangelogFile="true"/>
<include file="channel_group.xml" relativeToChangelogFile="true"/>
<include file="default_feature_flag.xml" relativeToChangelogFile="true"/>
<include file="feature_flag.xml" relativeToChangelogFile="true"/>
<include file="feature_mode.xml" relativeToChangelogFile="true"/>
<include file="lock.xml" relativeToChangelogFile="true"/>
<include file="system_config.xml" relativeToChangelogFile="true"/>
<include file="users.xml" relativeToChangelogFile="true"/>
</databaseChangeLog>

View File

@@ -0,0 +1,40 @@
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:pro="http://www.liquibase.org/xml/ns/pro"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext ../../dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/pro ../../dbchangelog-3.8.xsd" >
<changeSet author="Sheldan" id="users-table">
<createTable tableName="auser">
<column name="id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="users_pkey"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
</createTable>
</changeSet>
<changeSet author="Sheldan" id="user_in_server-table">
<createTable tableName="user_in_server">
<column autoIncrement="true" name="user_in_server_id" type="BIGINT">
<constraints nullable="false" primaryKey="true" primaryKeyName="user_in_server_pkey"/>
</column>
<column name="created" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="updated" type="TIMESTAMP WITHOUT TIME ZONE"/>
<column name="server_reference" type="BIGINT">
<constraints nullable="false"/>
</column>
<column name="user_reference" type="BIGINT">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
<changeSet author="Sheldan" id="user_in_server-fk_auser_user">
<addForeignKeyConstraint baseColumnNames="user_reference" baseTableName="user_in_server" constraintName="fk_auser_user" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="auser" validate="true"/>
</changeSet>
<changeSet author="Sheldan" id="user_in_server-fk_user_server">
<addForeignKeyConstraint baseColumnNames="server_reference" baseTableName="user_in_server" constraintName="fk_user_server" deferrable="false" initiallyDeferred="false" onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="id" referencedTableName="server" validate="true"/>
</changeSet>
</databaseChangeLog>

View File

@@ -0,0 +1,10 @@
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xmlns:pro="http://www.liquibase.org/xml/ns/pro"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext dbchangelog-3.8.xsd
http://www.liquibase.org/xml/ns/pro dbchangelog-3.8.xsd" >
<include file="1.0-core/collection.xml" relativeToChangelogFile="true"/>
</databaseChangeLog>

View File

@@ -1 +0,0 @@
<#assign featureString>${features?join(", ")}</#assign><#include "disable_available_features">

View File

@@ -1 +0,0 @@
<#assign featureString>${features?join(", ")}</#assign><#include "enable_available_features">

View File

@@ -1,15 +0,0 @@
{
"title": {
"title": "<#include "features_embed_title">"
},
"color" : {
"r": 200,
"g": 0,
"b": 255
},
"description": "
<#list features as feature>
${feature.featureFlag.enabled?string('✅', '❌')} **<#include "${feature.featureConfig.feature.key}_feature">** <#include "feature_embed_key">: `${feature.featureConfig.feature.key}`
</#list>
"
}

View File

@@ -1,51 +0,0 @@
{
"title": {
"title": "<#include "help_command_embed_title">"
},
"color" : {
"r": 200,
"g": 0,
"b": 255
},
"description": "<#include "help_command_embed_command_name">: **${command.name}**
<#include "help_command_embed_command_description">: <#if command.templated> <#include "${command.name}_description"> <#else> ${command.description} </#if>
<#if command.help??>
<#if command.help.templated>
<#include "help_command_embed_command_usage">: `<#include "${command.name}_usage">`
<#include "help_command_embed_command_detailed_help">: <#include "${command.name}_long_help">
<#if command.help.hasExample>
<#include "help_command_embed_command_example">: <#include "${command.name}_example">
</#if>
<#else>
<#include "help_command_embed_command_usage">: `${command.help.usage}`
<#include "help_command_embed_command_detailed_help">: ${command.help.longHelp}
<#if command.help.hasExample>
<#include "help_command_embed_command_example">:${command.help.example}
</#if>
</#if>
<#if command.aliases?? && command.aliases?size gt 0>
<#include "help_command_embed_command_aliases">: `${command.aliases?join("`, `")}`
</#if>
<#if restricted?? && restricted>
<#include "help_command_embed_command_executable_by">:<#if allowedRoles??> <#list allowedRoles as allowedRole> ${allowedRole.asMention}<#sep><#include "help_command_embed_or"><#else><#include "help_command_embed_command_executable_by_nobody"></#list> </#if>
<#if immuneRoles?? ><#include "help_command_embed_command_immune">: <#list immuneRoles as immuneRole> ${immuneRole.asMention}<#sep><#include "help_command_embed_or"><#else>None</#list> </#if>
<#else>
<#include "help_command_embed_command_not_restricted">
</#if>
</#if>
<#include "help_command_embed_command_parameters">:
<#if command.parameters??>
<#list command.parameters as parameter>
<#include "help_command_embed_command_description"> `${parameter.name}`: <#if parameter.templated?? && parameter.templated><#include "${command.name}_parameter_${parameter.name}"><#else>${(parameter.description)!""}</#if>
<#include "help_command_embed_command_optional"><#sep>
<#else>
<#include "help_command_embed_command_no_parameters">
</#list>
<#else>
<#include "help_command_embed_command_no_parameters">
</#if>
"
}

View File

@@ -1,23 +0,0 @@
{
<#assign name>${module.moduleInterface.info.name}</#assign>
"title": {
"title": "<#include "help_module_embed_title">"
},
"color" : {
"r": 200,
"g": 0,
"b": 255
},
"description": "
<#include "help_module_embed_module_name">: **${module.moduleInterface.info.name}**
<#include "help_module_embed_module_description">: ${module.moduleInterface.info.description}
<#include "help_module_embed_commands">:
<#list module.commands as command>`${command.configuration.name}`<#sep>, </#list>
<#if module.subModules??>
<#include "help_module_embed_sub_modules">: <#list module.subModules as module>`${module.info.name}`<#sep>, </#list>
</#if>
",
"footer": {
"text": "<#include "help_command_embed_hint_footer">"
}
}

View File

@@ -1,19 +0,0 @@
{
"title": {
"title": "<#include "help_modules_embed_title">"
},
"color" : {
"r": 200,
"g": 0,
"b": 255
},
"description": "
<#list modules as module>
<#include "help_module_embed_module_name">: **${module.info.name}**
<#include "help_module_embed_module_description">: ${module.info.description}
</#list>
",
"footer": {
"text": "<#include "help_modules_embed_footer_hint">"
}
}

View File

@@ -1,24 +0,0 @@
{
"title": {
"title": "<#include "listChannelGroups_embed_title">"
},
"color" : {
"r": 200,
"g": 0,
"b": 255
},
<#if groups?size = 0>
"description": "<#include "listChannelGroups_no_channel_group">",
</#if>
"fields": [
<#list groups as group>
{
"name": "${group.name}",
"value": "
<#list group.channels as channel>${channel.discordChannel.asMention}<#sep>,</#list>
"
}<#sep>,
<#else>
</#list>
]
}

View File

@@ -1 +0,0 @@
<#include "posttarget_invalid_post_target_response"> <#include "posttarget_no_target">

View File

@@ -1,19 +0,0 @@
{
"title": {
"title": "<#include "posttarget_embed_title">"
},
"color" : {
"r": 200,
"g": 0,
"b": 255
},
"description": "
<#list postTargets as postTarget>
<#assign postTargetName>${postTarget.postTarget.name}</#assign>
<#assign channelMention><#if postTarget.channel?has_content>${postTarget.channel.asMention}<#else><#include "posttarget_no_channel"></#if></#assign>
<#include "posttarget_post_target_text">
<#else>
<#include "posttarget_no_post_targets_found">
</#list>
"
}

View File

@@ -1 +0,0 @@
<#assign featureName><#include "${featureConfig.feature.key}_feature"></#assign><#include "setup_cancellation_message">

View File

@@ -1 +0,0 @@
<#assign featureName><#include "${featureConfig.feature.key}_feature"></#assign><#include "setup_completion_message">

View File

@@ -1,5 +0,0 @@
<#list actionConfigs as actionConfig>
<#assign param=actionConfig.templateModel>
<#include "${actionConfig.templateName}">
</#list>

View File

@@ -1 +0,0 @@
<#assign featureName><#include "${featureConfig.feature.key}_feature"></#assign><#include "setup_initial_message_display">

View File

@@ -1 +0,0 @@
<#assign postTargetKey>${param.postTargetKey}</#assign><#assign channel>${param.channel.asMention}</#assign><#include "setup_post_target_action_display">

View File

@@ -1 +0,0 @@
<#assign currentTarget><#if currentTextChannel?has_content>${currentTextChannel.asMention}<#else><#include "setup_post_target_no_channel_set"></#if></#assign><#include "setup_posttarget_${postTargetKey}">

View File

@@ -1 +0,0 @@
<#assign configKey>${param.configKey}</#assign><#assign newValue>${param.newValue}</#assign><#include "setup_system_config_action_display">

View File

@@ -1 +0,0 @@
<#assign defaultValue=defaultConfig.valueAsString><#include "setup_config_${configKey}">

View File

@@ -1 +0,0 @@
<#assign user>${user.name}#${user.discriminator} (${user.asMention})</#assign><#include "user_joined_text">

View File

@@ -1 +0,0 @@
<#assign user>${user.name}#${user.discriminator} (${user.asMention})</#assign><#include "user_left_text">

View File

@@ -1 +0,0 @@
The channel ${channelId} was not found in guild ${guildId}.

View File

@@ -1 +0,0 @@
<#assign featureName><#include "${featureConfig.feature.key}_feature"></#assign><#assign featureKey>${featureConfig.feature.key}</#assign><#include "feature_disabled_text">

View File

@@ -1 +0,0 @@
<#assign featureName><#include "${featureConfig.feature.key}_feature"></#assign><#assign featureKey>${featureConfig.feature.key}</#assign><#assign requiredModes><#list command.featureModeLimitations as mode>`${mode.key}`<sep>, </#list></#assign><#include "feature_mode_not_correct_text">

View File

@@ -1 +0,0 @@
<#assign availableModes>${availableModes?join(", ")}</#assign><#include "feature_mode_not_found_text">

View File

@@ -1 +0,0 @@
<#assign availableFeatures>${availableFeatures?join(", ")}</#assign><#include "feature_not_found_text">

Some files were not shown because too many files have changed in this diff Show More