diff --git a/pom.xml b/pom.xml index 3f3a189..6ee5d1f 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.boot spring-boot-starter-parent - 3.1.2 + 3.4.0 ru.ldeloff @@ -15,10 +15,6 @@ ServerMonitorBot 17 - 9.16.0 - ${database.url} - ${database.username} - ${database.password} ru.ldeloff.servermonitorbot.ServerMonitorBotApplication @@ -26,7 +22,6 @@ org.springframework.boot spring-boot-starter - org.projectlombok lombok @@ -45,26 +40,13 @@ org.telegram telegrambots - 6.8.0 + 6.9.7.1 com.jcraft jsch 0.1.55 - - org.springframework.boot - spring-boot-starter-data-jpa - - - org.postgresql - postgresql - - - org.flywaydb - flyway-core - ${flyway.version} - @@ -80,32 +62,6 @@ - - - org.flywaydb - flyway-maven-plugin - ${flyway.version} - - - migrate - deploy - - migrate - - - - - ${database.url} - ${database.username} - ${database.password} - - classpath:db/migration - - - - - org.springframework.boot - spring-boot-maven-plugin diff --git a/src/main/java/ru/ldeloff/servermonitorbot/ServerMonitorBotApplication.java b/src/main/java/ru/ldeloff/servermonitorbot/ServerMonitorBotApplication.java index fcdcebe..49a7a39 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/ServerMonitorBotApplication.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/ServerMonitorBotApplication.java @@ -4,11 +4,11 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.scheduling.annotation.EnableScheduling; -import ru.ldeloff.servermonitorbot.config.SshServerList; +import ru.ldeloff.servermonitorbot.model.server.SshServers; @SpringBootApplication @EnableScheduling -@EnableConfigurationProperties(SshServerList.class) +@EnableConfigurationProperties(SshServers.class) public class ServerMonitorBotApplication { public static void main(String[] args) { diff --git a/src/main/java/ru/ldeloff/servermonitorbot/internal/template/CommandTemplate.java b/src/main/java/ru/ldeloff/servermonitorbot/commands/CommandTemplate.java similarity index 80% rename from src/main/java/ru/ldeloff/servermonitorbot/internal/template/CommandTemplate.java rename to src/main/java/ru/ldeloff/servermonitorbot/commands/CommandTemplate.java index d35f55b..2753e03 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/internal/template/CommandTemplate.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/commands/CommandTemplate.java @@ -1,4 +1,4 @@ -package ru.ldeloff.servermonitorbot.internal.template; +package ru.ldeloff.servermonitorbot.commands; import lombok.Getter; import lombok.RequiredArgsConstructor; @@ -6,13 +6,13 @@ import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.telegram.telegrambots.meta.api.methods.send.SendMessage; import org.telegram.telegrambots.meta.api.objects.Update; -import org.telegram.telegrambots.meta.exceptions.TelegramApiException; -import ru.ldeloff.servermonitorbot.integration.in.TelegramBotController; -import ru.ldeloff.servermonitorbot.internal.data.model.SshServer; -import ru.ldeloff.servermonitorbot.internal.template.util.UpdateUtil; -import ru.ldeloff.servermonitorbot.internal.data.model.User; -import ru.ldeloff.servermonitorbot.integration.out.service.SshService; -import ru.ldeloff.servermonitorbot.internal.ui.ServerListButtons; +import ru.ldeloff.servermonitorbot.model.user.Role; +import ru.ldeloff.servermonitorbot.model.server.SshServer; +import ru.ldeloff.servermonitorbot.service.MessagingService; +import ru.ldeloff.servermonitorbot.util.UpdateUtil; +import ru.ldeloff.servermonitorbot.model.user.User; +import ru.ldeloff.servermonitorbot.service.SshService; +import ru.ldeloff.servermonitorbot.view.ServerListButtons; import java.util.Arrays; import java.util.List; @@ -25,14 +25,15 @@ public abstract class CommandTemplate { private final UpdateUtil updateUtil; private final ServerListButtons serverListButtons; public final SshService sshService; + private final MessagingService messagingService; @Getter @Setter - private long expectedRole = 1L; + private List expectedRole = List.of(Role.ADMIN); @Getter @Setter private String name; - public boolean execute(Update update, TelegramBotController bot) { + public boolean execute(Update update) { if (!isExecute(update)) { return false; } @@ -45,7 +46,7 @@ public abstract class CommandTemplate { if (!updateUtil.roleChecker(update, expectedRole)) { logNotAuth(user, message); - sendMessage(actionForNotAuth(user, answer), bot); + messagingService.send(actionForNotAuth(user, answer)); return true; } @@ -53,11 +54,11 @@ public abstract class CommandTemplate { switch (type) { case "aggregate": logSuccess(user, message); - sendMessage(executeAggregate(user, answer), bot); + messagingService.send(executeAggregate(user, answer)); return true; case "command": logSuccess(user, message); - sendMessage(executeCommand(user, answer), bot); + messagingService.send(executeCommand(user, answer)); return true; default: return false; @@ -145,15 +146,4 @@ public abstract class CommandTemplate { + ") недостаточно прав для выполнения этой команды"); return message; } - - // Общее - // TODO: вынести - public static void sendMessage(SendMessage message, TelegramBotController bot) { - try { - bot.execute(message); - } catch (TelegramApiException e) { - e.printStackTrace(); - log.warn(e.getMessage()); - } - } } diff --git a/src/main/java/ru/ldeloff/servermonitorbot/internal/cpu/temp/service/CpuTemp.java b/src/main/java/ru/ldeloff/servermonitorbot/commands/cpu/temp/service/CpuTemp.java similarity index 67% rename from src/main/java/ru/ldeloff/servermonitorbot/internal/cpu/temp/service/CpuTemp.java rename to src/main/java/ru/ldeloff/servermonitorbot/commands/cpu/temp/service/CpuTemp.java index ed91b8d..32f18eb 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/internal/cpu/temp/service/CpuTemp.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/commands/cpu/temp/service/CpuTemp.java @@ -1,13 +1,14 @@ -package ru.ldeloff.servermonitorbot.internal.cpu.temp.service; +package ru.ldeloff.servermonitorbot.commands.cpu.temp.service; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import ru.ldeloff.servermonitorbot.internal.template.CommandTemplate; -import ru.ldeloff.servermonitorbot.internal.template.util.UpdateUtil; -import ru.ldeloff.servermonitorbot.internal.data.model.SshCommand; -import ru.ldeloff.servermonitorbot.internal.data.model.SshServer; -import ru.ldeloff.servermonitorbot.integration.out.service.SshService; -import ru.ldeloff.servermonitorbot.internal.ui.ServerListButtons; +import ru.ldeloff.servermonitorbot.commands.CommandTemplate; +import ru.ldeloff.servermonitorbot.service.MessagingService; +import ru.ldeloff.servermonitorbot.util.UpdateUtil; +import ru.ldeloff.servermonitorbot.model.SshCommand; +import ru.ldeloff.servermonitorbot.model.server.SshServer; +import ru.ldeloff.servermonitorbot.service.SshService; +import ru.ldeloff.servermonitorbot.view.ServerListButtons; import java.util.Objects; import java.util.Optional; @@ -16,8 +17,8 @@ import java.util.Optional; @Slf4j public class CpuTemp extends CommandTemplate { - public CpuTemp(UpdateUtil updateUtil, ServerListButtons serverListButtons, SshService sshService) { - super(updateUtil, serverListButtons, sshService); + public CpuTemp(UpdateUtil updateUtil, ServerListButtons serverListButtons, SshService sshService, MessagingService messagingService) { + super(updateUtil, serverListButtons, sshService, messagingService); setName("CPU.temp"); } diff --git a/src/main/java/ru/ldeloff/servermonitorbot/internal/hdd/mdadm/service/MdadmStatus.java b/src/main/java/ru/ldeloff/servermonitorbot/commands/hdd/mdadm/service/MdadmStatus.java similarity index 82% rename from src/main/java/ru/ldeloff/servermonitorbot/internal/hdd/mdadm/service/MdadmStatus.java rename to src/main/java/ru/ldeloff/servermonitorbot/commands/hdd/mdadm/service/MdadmStatus.java index c6fe306..d00974f 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/internal/hdd/mdadm/service/MdadmStatus.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/commands/hdd/mdadm/service/MdadmStatus.java @@ -1,13 +1,14 @@ -package ru.ldeloff.servermonitorbot.internal.hdd.mdadm.service; +package ru.ldeloff.servermonitorbot.commands.hdd.mdadm.service; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import ru.ldeloff.servermonitorbot.internal.template.CommandTemplate; -import ru.ldeloff.servermonitorbot.internal.template.util.UpdateUtil; -import ru.ldeloff.servermonitorbot.internal.data.model.SshCommand; -import ru.ldeloff.servermonitorbot.internal.data.model.SshServer; -import ru.ldeloff.servermonitorbot.integration.out.service.SshService; -import ru.ldeloff.servermonitorbot.internal.ui.ServerListButtons; +import ru.ldeloff.servermonitorbot.commands.CommandTemplate; +import ru.ldeloff.servermonitorbot.service.MessagingService; +import ru.ldeloff.servermonitorbot.util.UpdateUtil; +import ru.ldeloff.servermonitorbot.model.SshCommand; +import ru.ldeloff.servermonitorbot.model.server.SshServer; +import ru.ldeloff.servermonitorbot.service.SshService; +import ru.ldeloff.servermonitorbot.view.ServerListButtons; import java.util.*; @@ -15,8 +16,8 @@ import java.util.*; @Slf4j public class MdadmStatus extends CommandTemplate { - public MdadmStatus(UpdateUtil updateUtil, ServerListButtons serverListButtons, SshService sshService) { - super(updateUtil, serverListButtons, sshService); + public MdadmStatus(UpdateUtil updateUtil, ServerListButtons serverListButtons, SshService sshService, MessagingService messagingService) { + super(updateUtil, serverListButtons, sshService, messagingService); setName("MDADM"); } diff --git a/src/main/java/ru/ldeloff/servermonitorbot/internal/hdd/temp/service/HddTemp.java b/src/main/java/ru/ldeloff/servermonitorbot/commands/hdd/temp/service/HddTemp.java similarity index 64% rename from src/main/java/ru/ldeloff/servermonitorbot/internal/hdd/temp/service/HddTemp.java rename to src/main/java/ru/ldeloff/servermonitorbot/commands/hdd/temp/service/HddTemp.java index 2132f21..a92e8b9 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/internal/hdd/temp/service/HddTemp.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/commands/hdd/temp/service/HddTemp.java @@ -1,13 +1,14 @@ -package ru.ldeloff.servermonitorbot.internal.hdd.temp.service; +package ru.ldeloff.servermonitorbot.commands.hdd.temp.service; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import ru.ldeloff.servermonitorbot.internal.template.CommandTemplate; -import ru.ldeloff.servermonitorbot.internal.template.util.UpdateUtil; -import ru.ldeloff.servermonitorbot.internal.data.model.SshCommand; -import ru.ldeloff.servermonitorbot.internal.data.model.SshServer; -import ru.ldeloff.servermonitorbot.integration.out.service.SshService; -import ru.ldeloff.servermonitorbot.internal.ui.ServerListButtons; +import ru.ldeloff.servermonitorbot.commands.CommandTemplate; +import ru.ldeloff.servermonitorbot.service.MessagingService; +import ru.ldeloff.servermonitorbot.util.UpdateUtil; +import ru.ldeloff.servermonitorbot.model.SshCommand; +import ru.ldeloff.servermonitorbot.model.server.SshServer; +import ru.ldeloff.servermonitorbot.service.SshService; +import ru.ldeloff.servermonitorbot.view.ServerListButtons; import java.util.Objects; import java.util.Optional; @@ -15,8 +16,8 @@ import java.util.Optional; @Service @Slf4j public class HddTemp extends CommandTemplate { - public HddTemp(UpdateUtil updateUtil, ServerListButtons serverListButtons, SshService sshService) { - super(updateUtil, serverListButtons, sshService); + public HddTemp(UpdateUtil updateUtil, ServerListButtons serverListButtons, SshService sshService, MessagingService messagingService) { + super(updateUtil, serverListButtons, sshService, messagingService); setName("HDD.temp"); } diff --git a/src/main/java/ru/ldeloff/servermonitorbot/internal/statuschecker/scheduler/CheckSessionStatusScheduler.java b/src/main/java/ru/ldeloff/servermonitorbot/commands/statuschecker/scheduler/CheckSessionStatusScheduler.java similarity index 76% rename from src/main/java/ru/ldeloff/servermonitorbot/internal/statuschecker/scheduler/CheckSessionStatusScheduler.java rename to src/main/java/ru/ldeloff/servermonitorbot/commands/statuschecker/scheduler/CheckSessionStatusScheduler.java index c1de0b2..bca5cad 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/internal/statuschecker/scheduler/CheckSessionStatusScheduler.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/commands/statuschecker/scheduler/CheckSessionStatusScheduler.java @@ -1,9 +1,9 @@ -package ru.ldeloff.servermonitorbot.internal.statuschecker.scheduler; +package ru.ldeloff.servermonitorbot.commands.statuschecker.scheduler; import lombok.RequiredArgsConstructor; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; -import ru.ldeloff.servermonitorbot.integration.out.service.SshService; +import ru.ldeloff.servermonitorbot.service.SshService; @Service @RequiredArgsConstructor diff --git a/src/main/java/ru/ldeloff/servermonitorbot/commands/statuschecker/service/CheckSessionStatus.java b/src/main/java/ru/ldeloff/servermonitorbot/commands/statuschecker/service/CheckSessionStatus.java new file mode 100644 index 0000000..e2fc9d4 --- /dev/null +++ b/src/main/java/ru/ldeloff/servermonitorbot/commands/statuschecker/service/CheckSessionStatus.java @@ -0,0 +1,28 @@ +package ru.ldeloff.servermonitorbot.commands.statuschecker.service; + +import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.methods.send.SendMessage; +import ru.ldeloff.servermonitorbot.commands.CommandTemplate; +import ru.ldeloff.servermonitorbot.service.MessagingService; +import ru.ldeloff.servermonitorbot.util.UpdateUtil; +import ru.ldeloff.servermonitorbot.model.user.User; +import ru.ldeloff.servermonitorbot.service.SshService; +import ru.ldeloff.servermonitorbot.view.ServerListButtons; + +@Service +public class CheckSessionStatus extends CommandTemplate { + + public CheckSessionStatus(UpdateUtil updateUtil, ServerListButtons serverListButtons, SshService sshService, MessagingService messagingService) { + super(updateUtil, serverListButtons, sshService, messagingService); + setName("Статус"); + } + + public SendMessage executeAggregate(User user, SendMessage message) { + return super.sshService.getStatusSessions(message); + } + + @Override + public String executeCommandSpecificHost(String serverName) { + return null; + } +} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/internal/uname/service/Uname.java b/src/main/java/ru/ldeloff/servermonitorbot/commands/uname/service/Uname.java similarity index 64% rename from src/main/java/ru/ldeloff/servermonitorbot/internal/uname/service/Uname.java rename to src/main/java/ru/ldeloff/servermonitorbot/commands/uname/service/Uname.java index 05aeddf..2aef92b 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/internal/uname/service/Uname.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/commands/uname/service/Uname.java @@ -1,13 +1,14 @@ -package ru.ldeloff.servermonitorbot.internal.uname.service; +package ru.ldeloff.servermonitorbot.commands.uname.service; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import ru.ldeloff.servermonitorbot.internal.template.CommandTemplate; -import ru.ldeloff.servermonitorbot.internal.template.util.UpdateUtil; -import ru.ldeloff.servermonitorbot.internal.data.model.SshCommand; -import ru.ldeloff.servermonitorbot.internal.data.model.SshServer; -import ru.ldeloff.servermonitorbot.integration.out.service.SshService; -import ru.ldeloff.servermonitorbot.internal.ui.ServerListButtons; +import ru.ldeloff.servermonitorbot.commands.CommandTemplate; +import ru.ldeloff.servermonitorbot.service.MessagingService; +import ru.ldeloff.servermonitorbot.util.UpdateUtil; +import ru.ldeloff.servermonitorbot.model.SshCommand; +import ru.ldeloff.servermonitorbot.model.server.SshServer; +import ru.ldeloff.servermonitorbot.service.SshService; +import ru.ldeloff.servermonitorbot.view.ServerListButtons; import java.util.Objects; import java.util.Optional; @@ -16,8 +17,8 @@ import java.util.Optional; @Slf4j public class Uname extends CommandTemplate { - public Uname(UpdateUtil updateUtil, ServerListButtons serverListButtons, SshService sshService) { - super(updateUtil, serverListButtons, sshService); + public Uname(UpdateUtil updateUtil, ServerListButtons serverListButtons, SshService sshService, MessagingService messagingService) { + super(updateUtil, serverListButtons, sshService, messagingService); setName("uname"); } diff --git a/src/main/java/ru/ldeloff/servermonitorbot/config/UserConfig.java b/src/main/java/ru/ldeloff/servermonitorbot/config/UserConfig.java index edd8bb9..5384d12 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/config/UserConfig.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/config/UserConfig.java @@ -5,8 +5,8 @@ import lombok.Setter; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; -import ru.ldeloff.servermonitorbot.internal.data.model.User; -import ru.ldeloff.servermonitorbot.internal.data.service.RoleService; +import ru.ldeloff.servermonitorbot.model.user.User; +import ru.ldeloff.servermonitorbot.service.RoleService; import java.util.List; diff --git a/src/main/java/ru/ldeloff/servermonitorbot/integration/in/TelegramBotController.java b/src/main/java/ru/ldeloff/servermonitorbot/controller/TelegramBotController.java similarity index 75% rename from src/main/java/ru/ldeloff/servermonitorbot/integration/in/TelegramBotController.java rename to src/main/java/ru/ldeloff/servermonitorbot/controller/TelegramBotController.java index 198f9cc..fafea88 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/integration/in/TelegramBotController.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/controller/TelegramBotController.java @@ -1,14 +1,14 @@ -package ru.ldeloff.servermonitorbot.integration.in; +package ru.ldeloff.servermonitorbot.controller; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.telegram.telegrambots.bots.TelegramLongPollingBot; import org.telegram.telegrambots.meta.api.objects.Message; import org.telegram.telegrambots.meta.api.objects.Update; -import ru.ldeloff.servermonitorbot.integration.in.model.TelegramBot; -import ru.ldeloff.servermonitorbot.integration.out.service.SshService; -import ru.ldeloff.servermonitorbot.internal.template.CommandTemplate; -import ru.ldeloff.servermonitorbot.internal.mainmenu.service.SwitchToMainMenu; +import ru.ldeloff.servermonitorbot.model.TelegramBot; +import ru.ldeloff.servermonitorbot.service.SshService; +import ru.ldeloff.servermonitorbot.commands.CommandTemplate; +import ru.ldeloff.servermonitorbot.view.SwitchToMainMenu; import java.util.Map; @@ -17,15 +17,17 @@ import java.util.Map; public class TelegramBotController extends TelegramLongPollingBot { private final Map commands; + private final TelegramBot telegramBot; private final SwitchToMainMenu switchToMainMenu; private final SshService sshService; + @Override public void onUpdateReceived(Update update) { boolean result = false; for (Map.Entry entry : commands.entrySet()) { - result = entry.getValue().execute(update, this); + result = entry.getValue().execute(update); if (result) { break; } @@ -36,7 +38,7 @@ public class TelegramBotController extends TelegramLongPollingBot { message.setText("Not found"); } update.setMessage(message); - switchToMainMenu.execute(update, this); + switchToMainMenu.execute(update); } } diff --git a/src/main/java/ru/ldeloff/servermonitorbot/init/AddUsers.java b/src/main/java/ru/ldeloff/servermonitorbot/init/AddUsers.java index 62da1fc..7d31eef 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/init/AddUsers.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/init/AddUsers.java @@ -4,13 +4,15 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; +import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; import ru.ldeloff.servermonitorbot.config.UserConfig; -import ru.ldeloff.servermonitorbot.internal.data.service.UserService; +import ru.ldeloff.servermonitorbot.service.UserService; @Slf4j @Component @RequiredArgsConstructor +@Order(2) public class AddUsers implements ApplicationRunner { final UserConfig userConfig; diff --git a/src/main/java/ru/ldeloff/servermonitorbot/init/SshConnect.java b/src/main/java/ru/ldeloff/servermonitorbot/init/SshConnect.java index d4e2e83..5456af0 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/init/SshConnect.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/init/SshConnect.java @@ -3,12 +3,13 @@ package ru.ldeloff.servermonitorbot.init; import lombok.RequiredArgsConstructor; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; +import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; -import ru.ldeloff.servermonitorbot.integration.out.repository.SshRepository; -import ru.ldeloff.servermonitorbot.integration.out.service.SshService; +import ru.ldeloff.servermonitorbot.service.SshService; @Component @RequiredArgsConstructor +@Order(3) public class SshConnect implements ApplicationRunner { final SshService sshService; diff --git a/src/main/java/ru/ldeloff/servermonitorbot/integration/in/StartBot.java b/src/main/java/ru/ldeloff/servermonitorbot/init/StartBot.java similarity index 67% rename from src/main/java/ru/ldeloff/servermonitorbot/integration/in/StartBot.java rename to src/main/java/ru/ldeloff/servermonitorbot/init/StartBot.java index e9acd0d..5845f07 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/integration/in/StartBot.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/init/StartBot.java @@ -1,31 +1,35 @@ -package ru.ldeloff.servermonitorbot.integration.in; +package ru.ldeloff.servermonitorbot.init; import lombok.NoArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; +import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; import org.telegram.telegrambots.meta.TelegramBotsApi; import org.telegram.telegrambots.meta.api.methods.send.SendMessage; import org.telegram.telegrambots.meta.exceptions.TelegramApiException; import org.telegram.telegrambots.updatesreceivers.DefaultBotSession; -import ru.ldeloff.servermonitorbot.internal.data.model.User; -import ru.ldeloff.servermonitorbot.internal.template.CommandTemplate; -import ru.ldeloff.servermonitorbot.internal.data.service.UserService; -import ru.ldeloff.servermonitorbot.internal.ui.TelegramBotKeyboard; +import ru.ldeloff.servermonitorbot.controller.TelegramBotController; +import ru.ldeloff.servermonitorbot.model.user.User; +import ru.ldeloff.servermonitorbot.service.MessagingService; +import ru.ldeloff.servermonitorbot.service.UserService; +import ru.ldeloff.servermonitorbot.view.TelegramBotKeyboard; @Slf4j @Component @NoArgsConstructor +@Order(1) public class StartBot implements ApplicationRunner { private TelegramBotController telegramBot; private TelegramBotKeyboard telegramBotKeyboard; private UserService userService; + private MessagingService messagingService; @Autowired - public StartBot(TelegramBotController telegramBot, TelegramBotKeyboard telegramBotKeyboard, UserService userService) { + public StartBot(TelegramBotController telegramBot, TelegramBotKeyboard telegramBotKeyboard, UserService userService, MessagingService messagingService) { this.telegramBot = telegramBot; this.telegramBotKeyboard = telegramBotKeyboard; this.userService = userService; @@ -35,16 +39,16 @@ public class StartBot implements ApplicationRunner { try { TelegramBotsApi botsApi = new TelegramBotsApi(DefaultBotSession.class); botsApi.registerBot(telegramBot); - userService.getAllUsers().forEach(this::SendInitMessage); + userService.getAllUsers().forEach(this::sendInitMessage); log.info("Бот запущен"); } catch (TelegramApiException e) { log.error(e.getMessage()); } } - private void SendInitMessage(User user) { + private void sendInitMessage(User user) { SendMessage answer = new SendMessage(); answer.setChatId(user.getTelegramId()); answer.setText("Бот перезапущен"); - CommandTemplate.sendMessage(telegramBotKeyboard.uiForm(answer), telegramBot); + messagingService.send(telegramBotKeyboard.uiForm(answer)); } } diff --git a/src/main/java/ru/ldeloff/servermonitorbot/internal/data/mapper/UserMapper.java b/src/main/java/ru/ldeloff/servermonitorbot/internal/data/mapper/UserMapper.java deleted file mode 100644 index d1153a7..0000000 --- a/src/main/java/ru/ldeloff/servermonitorbot/internal/data/mapper/UserMapper.java +++ /dev/null @@ -1,27 +0,0 @@ -package ru.ldeloff.servermonitorbot.internal.data.mapper; - -import org.springframework.stereotype.Component; -import ru.ldeloff.servermonitorbot.internal.data.model.User; -import ru.ldeloff.servermonitorbot.internal.data.model.UserEntity; -import ru.ldeloff.servermonitorbot.internal.data.service.RoleService; - -@Component -public class UserMapper { - final RoleService roleService; - - public UserMapper(RoleService roleService) { - this.roleService = roleService; - } - - public UserEntity toEntity(User user) { - return new UserEntity() - .setTelegramId(user.getTelegramId()) - .setRole(user.getRole()); - } - - public User toModel(UserEntity userEntity) { - return new User() - .setTelegramId(userEntity.getTelegramId()) - .setRole(userEntity.getRole()); - } -} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/internal/data/model/Role.java b/src/main/java/ru/ldeloff/servermonitorbot/internal/data/model/Role.java deleted file mode 100644 index 2922052..0000000 --- a/src/main/java/ru/ldeloff/servermonitorbot/internal/data/model/Role.java +++ /dev/null @@ -1,17 +0,0 @@ -package ru.ldeloff.servermonitorbot.internal.data.model; - -import jakarta.persistence.*; -import lombok.Data; - -@Entity -@Data -@Table(name = "roles") -public class Role { - @Id - @Column(name = "id") - @GeneratedValue(strategy = GenerationType.IDENTITY) - private long id; - - @Column(name = "name") - private String name; -} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/internal/data/model/UserEntity.java b/src/main/java/ru/ldeloff/servermonitorbot/internal/data/model/UserEntity.java deleted file mode 100644 index dbf9de4..0000000 --- a/src/main/java/ru/ldeloff/servermonitorbot/internal/data/model/UserEntity.java +++ /dev/null @@ -1,23 +0,0 @@ -package ru.ldeloff.servermonitorbot.internal.data.model; - -import jakarta.persistence.*; -import lombok.Data; -import lombok.experimental.Accessors; - -@Entity -@Data -@Table(name = "users") -@Accessors(chain = true) -public class UserEntity { - @Id - @Column(name = "id") - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; - - @Column(name = "telegram_id") - private Long telegramId; - - @ManyToOne - @JoinColumn(name = "role_id") - private Role role; -} \ No newline at end of file diff --git a/src/main/java/ru/ldeloff/servermonitorbot/internal/data/repository/RoleRepository.java b/src/main/java/ru/ldeloff/servermonitorbot/internal/data/repository/RoleRepository.java deleted file mode 100644 index 6bfd982..0000000 --- a/src/main/java/ru/ldeloff/servermonitorbot/internal/data/repository/RoleRepository.java +++ /dev/null @@ -1,13 +0,0 @@ -package ru.ldeloff.servermonitorbot.internal.data.repository; - -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; -import ru.ldeloff.servermonitorbot.internal.data.model.Role; - -import java.util.Optional; - -@Repository -public interface RoleRepository extends JpaRepository { - Optional findRoleByName(String name); - Optional findRoleById(Long id); -} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/internal/data/repository/UserRepository.java b/src/main/java/ru/ldeloff/servermonitorbot/internal/data/repository/UserRepository.java deleted file mode 100644 index f7fc684..0000000 --- a/src/main/java/ru/ldeloff/servermonitorbot/internal/data/repository/UserRepository.java +++ /dev/null @@ -1,17 +0,0 @@ -package ru.ldeloff.servermonitorbot.internal.data.repository; - -import jakarta.validation.constraints.NotNull; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; -import ru.ldeloff.servermonitorbot.internal.data.model.UserEntity; - -import java.util.List; - -@Repository -public interface UserRepository extends JpaRepository { - - UserEntity getByTelegramId(long id); - - @NotNull List findAll(); - -} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/internal/data/service/RoleService.java b/src/main/java/ru/ldeloff/servermonitorbot/internal/data/service/RoleService.java deleted file mode 100644 index 608320f..0000000 --- a/src/main/java/ru/ldeloff/servermonitorbot/internal/data/service/RoleService.java +++ /dev/null @@ -1,9 +0,0 @@ -package ru.ldeloff.servermonitorbot.internal.data.service; - -import ru.ldeloff.servermonitorbot.internal.data.model.Role; - -public interface RoleService { - Role findRoleByName(String name); - - Role findRoleById(Long id); -} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/internal/data/service/RoleServiceImpl.java b/src/main/java/ru/ldeloff/servermonitorbot/internal/data/service/RoleServiceImpl.java deleted file mode 100644 index ef4cb73..0000000 --- a/src/main/java/ru/ldeloff/servermonitorbot/internal/data/service/RoleServiceImpl.java +++ /dev/null @@ -1,29 +0,0 @@ -package ru.ldeloff.servermonitorbot.internal.data.service; - -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; -import ru.ldeloff.servermonitorbot.internal.data.model.Role; -import ru.ldeloff.servermonitorbot.internal.data.repository.RoleRepository; - -import java.util.Locale; -import java.util.Optional; - -@Service -@RequiredArgsConstructor -public class RoleServiceImpl implements RoleService { - - private final RoleRepository roleRepository; - - @Override - public Role findRoleByName(String name) { - Optional role = roleRepository.findRoleByName(name.toUpperCase(Locale.ROOT)); - //noinspection OptionalGetWithoutIsPresent - return role.orElseGet(() -> roleRepository.findRoleByName("ANONYMOUS").get()); - } - - @Override - public Role findRoleById(Long id) { - Optional role = roleRepository.findRoleById(id); - return role.orElseGet(() -> roleRepository.findRoleByName("ANONYMOUS").get()); - } -} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/internal/data/service/UserService.java b/src/main/java/ru/ldeloff/servermonitorbot/internal/data/service/UserService.java deleted file mode 100644 index 0112301..0000000 --- a/src/main/java/ru/ldeloff/servermonitorbot/internal/data/service/UserService.java +++ /dev/null @@ -1,19 +0,0 @@ -package ru.ldeloff.servermonitorbot.internal.data.service; - -import ru.ldeloff.servermonitorbot.internal.data.model.User; -import ru.ldeloff.servermonitorbot.internal.data.model.UserEntity; - -import java.util.List; - -public interface UserService { - - void saveOrUpdateUser(User user); - - UserEntity getEntityByTelegramId(Long id); - - User getByTelegramId(Long id); - - List getAllEntity(); - - List getAllUsers(); -} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/internal/data/service/UserServiceImpl.java b/src/main/java/ru/ldeloff/servermonitorbot/internal/data/service/UserServiceImpl.java deleted file mode 100644 index 79f5415..0000000 --- a/src/main/java/ru/ldeloff/servermonitorbot/internal/data/service/UserServiceImpl.java +++ /dev/null @@ -1,47 +0,0 @@ -package ru.ldeloff.servermonitorbot.internal.data.service; - -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import ru.ldeloff.servermonitorbot.internal.data.mapper.UserMapper; -import ru.ldeloff.servermonitorbot.internal.data.model.User; -import ru.ldeloff.servermonitorbot.internal.data.model.UserEntity; -import ru.ldeloff.servermonitorbot.internal.data.repository.UserRepository; - -import java.util.List; - -@Service -@RequiredArgsConstructor -@Slf4j -public class UserServiceImpl implements UserService { - - final UserRepository userRepository; - final UserMapper userMapper; - - @Override - public void saveOrUpdateUser(User user) { - UserEntity userEntity = getEntityByTelegramId(user.getTelegramId()); - if (userEntity != null) { - userEntity.setRole(user.getRole()); - } else { - userEntity = userMapper.toEntity(user); - } - userRepository.save(userEntity); - } - - @Override - public UserEntity getEntityByTelegramId(Long id) { - return userRepository.getByTelegramId(id); - } - - @Override - public User getByTelegramId(Long id) { - return userMapper.toModel(userRepository.getByTelegramId(id)); - } - - @Override - public List getAllEntity() {return userRepository.findAll(); } - - @Override - public List getAllUsers() {return userRepository.findAll().stream().map(userMapper::toModel).toList(); } -} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/internal/statuschecker/service/CheckSessionStatus.java b/src/main/java/ru/ldeloff/servermonitorbot/internal/statuschecker/service/CheckSessionStatus.java deleted file mode 100644 index 5ee9c0f..0000000 --- a/src/main/java/ru/ldeloff/servermonitorbot/internal/statuschecker/service/CheckSessionStatus.java +++ /dev/null @@ -1,27 +0,0 @@ -package ru.ldeloff.servermonitorbot.internal.statuschecker.service; - -import org.springframework.stereotype.Service; -import org.telegram.telegrambots.meta.api.methods.send.SendMessage; -import ru.ldeloff.servermonitorbot.internal.template.CommandTemplate; -import ru.ldeloff.servermonitorbot.internal.template.util.UpdateUtil; -import ru.ldeloff.servermonitorbot.internal.data.model.User; -import ru.ldeloff.servermonitorbot.integration.out.service.SshService; -import ru.ldeloff.servermonitorbot.internal.ui.ServerListButtons; - -@Service -public class CheckSessionStatus extends CommandTemplate { - - public CheckSessionStatus(UpdateUtil updateUtil, ServerListButtons serverListButtons, SshService sshService) { - super(updateUtil, serverListButtons, sshService); - setName("Статус"); - } - - public SendMessage executeAggregate(User user, SendMessage message) { - return super.sshService.getStatusSessions(message); - } - - @Override - public String executeCommandSpecificHost(String serverName) { - return null; - } -} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/internal/template/model/CommandType.java b/src/main/java/ru/ldeloff/servermonitorbot/internal/template/model/CommandType.java deleted file mode 100644 index d5b3bd4..0000000 --- a/src/main/java/ru/ldeloff/servermonitorbot/internal/template/model/CommandType.java +++ /dev/null @@ -1,4 +0,0 @@ -package ru.ldeloff.servermonitorbot.internal.template.model; - -public enum CommandType { -} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/internal/ui/util/CommandUtil.java b/src/main/java/ru/ldeloff/servermonitorbot/internal/ui/util/CommandUtil.java deleted file mode 100644 index 98b5c9b..0000000 --- a/src/main/java/ru/ldeloff/servermonitorbot/internal/ui/util/CommandUtil.java +++ /dev/null @@ -1,21 +0,0 @@ -package ru.ldeloff.servermonitorbot.internal.ui.util; - - -import lombok.RequiredArgsConstructor; -import ru.ldeloff.servermonitorbot.internal.template.CommandTemplate; - -import java.util.HashMap; -import java.util.Map; - -@RequiredArgsConstructor -public class CommandUtil { - private final Map commandsMap; - - public HashMap getCommands() { - HashMap commands = new HashMap<>(); - for (Map.Entry entry : commandsMap.entrySet()) { - commands.put(entry.getValue().getName(), entry.getValue().getExpectedRole()); - } - return commands; - } -} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/internal/data/model/SshCommand.java b/src/main/java/ru/ldeloff/servermonitorbot/model/SshCommand.java similarity index 83% rename from src/main/java/ru/ldeloff/servermonitorbot/internal/data/model/SshCommand.java rename to src/main/java/ru/ldeloff/servermonitorbot/model/SshCommand.java index 0346e5f..8ddf3f2 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/internal/data/model/SshCommand.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/model/SshCommand.java @@ -1,9 +1,10 @@ -package ru.ldeloff.servermonitorbot.internal.data.model; +package ru.ldeloff.servermonitorbot.model; import jakarta.validation.constraints.Min; import jakarta.validation.constraints.NotNull; import lombok.Getter; import lombok.Setter; +import ru.ldeloff.servermonitorbot.model.server.SshServer; @Getter @Setter diff --git a/src/main/java/ru/ldeloff/servermonitorbot/integration/in/model/TelegramBot.java b/src/main/java/ru/ldeloff/servermonitorbot/model/TelegramBot.java similarity index 88% rename from src/main/java/ru/ldeloff/servermonitorbot/integration/in/model/TelegramBot.java rename to src/main/java/ru/ldeloff/servermonitorbot/model/TelegramBot.java index c33d8c1..8e32ffe 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/integration/in/model/TelegramBot.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/model/TelegramBot.java @@ -1,4 +1,4 @@ -package ru.ldeloff.servermonitorbot.integration.in.model; +package ru.ldeloff.servermonitorbot.model; import lombok.Getter; import org.springframework.beans.factory.annotation.Value; diff --git a/src/main/java/ru/ldeloff/servermonitorbot/model/server/ServerStatus.java b/src/main/java/ru/ldeloff/servermonitorbot/model/server/ServerStatus.java new file mode 100644 index 0000000..b4b91f2 --- /dev/null +++ b/src/main/java/ru/ldeloff/servermonitorbot/model/server/ServerStatus.java @@ -0,0 +1,7 @@ +package ru.ldeloff.servermonitorbot.model.server; + +public enum ServerStatus { + ONLINE, + OFFLINE, + CONNECTION_LOST +} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/internal/data/model/SshServer.java b/src/main/java/ru/ldeloff/servermonitorbot/model/server/SshServer.java similarity index 84% rename from src/main/java/ru/ldeloff/servermonitorbot/internal/data/model/SshServer.java rename to src/main/java/ru/ldeloff/servermonitorbot/model/server/SshServer.java index 9b9f905..39b11ba 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/internal/data/model/SshServer.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/model/server/SshServer.java @@ -1,4 +1,4 @@ -package ru.ldeloff.servermonitorbot.internal.data.model; +package ru.ldeloff.servermonitorbot.model.server; import com.jcraft.jsch.Session; import jakarta.validation.constraints.NotNull; @@ -21,4 +21,5 @@ public class SshServer { @NotNull private String password; private Session session; + private ServerStatus status; } diff --git a/src/main/java/ru/ldeloff/servermonitorbot/config/SshServerList.java b/src/main/java/ru/ldeloff/servermonitorbot/model/server/SshServers.java similarity index 69% rename from src/main/java/ru/ldeloff/servermonitorbot/config/SshServerList.java rename to src/main/java/ru/ldeloff/servermonitorbot/model/server/SshServers.java index 77a491e..31bbd50 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/config/SshServerList.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/model/server/SshServers.java @@ -1,10 +1,9 @@ -package ru.ldeloff.servermonitorbot.config; +package ru.ldeloff.servermonitorbot.model.server; import lombok.Getter; import lombok.Setter; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; -import ru.ldeloff.servermonitorbot.internal.data.model.SshServer; import java.util.List; @@ -12,8 +11,6 @@ import java.util.List; @ConfigurationProperties(prefix = "ssh") @Getter @Setter -public class SshServerList { - +public class SshServers { private List servers; - } diff --git a/src/main/java/ru/ldeloff/servermonitorbot/model/user/Role.java b/src/main/java/ru/ldeloff/servermonitorbot/model/user/Role.java new file mode 100644 index 0000000..a304148 --- /dev/null +++ b/src/main/java/ru/ldeloff/servermonitorbot/model/user/Role.java @@ -0,0 +1,7 @@ +package ru.ldeloff.servermonitorbot.model.user; + +public enum Role { + ADMIN, + USER, + ANONYMOUS +} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/internal/data/model/User.java b/src/main/java/ru/ldeloff/servermonitorbot/model/user/User.java similarity index 77% rename from src/main/java/ru/ldeloff/servermonitorbot/internal/data/model/User.java rename to src/main/java/ru/ldeloff/servermonitorbot/model/user/User.java index e1ed852..eb6af47 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/internal/data/model/User.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/model/user/User.java @@ -1,4 +1,4 @@ -package ru.ldeloff.servermonitorbot.internal.data.model; +package ru.ldeloff.servermonitorbot.model.user; import lombok.Data; import lombok.experimental.Accessors; diff --git a/src/main/java/ru/ldeloff/servermonitorbot/model/user/Users.java b/src/main/java/ru/ldeloff/servermonitorbot/model/user/Users.java new file mode 100644 index 0000000..442dab5 --- /dev/null +++ b/src/main/java/ru/ldeloff/servermonitorbot/model/user/Users.java @@ -0,0 +1,13 @@ +package ru.ldeloff.servermonitorbot.model.user; + +import lombok.Getter; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +@Getter +@Component +public class Users { + private final List users = new ArrayList<>(); +} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/integration/out/repository/SshRepository.java b/src/main/java/ru/ldeloff/servermonitorbot/repository/SshRepository.java similarity index 58% rename from src/main/java/ru/ldeloff/servermonitorbot/integration/out/repository/SshRepository.java rename to src/main/java/ru/ldeloff/servermonitorbot/repository/SshRepository.java index 9de3756..7b43f07 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/integration/out/repository/SshRepository.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/repository/SshRepository.java @@ -1,7 +1,7 @@ -package ru.ldeloff.servermonitorbot.integration.out.repository; +package ru.ldeloff.servermonitorbot.repository; import com.jcraft.jsch.JSchException; -import ru.ldeloff.servermonitorbot.internal.data.model.SshServer; +import ru.ldeloff.servermonitorbot.model.server.SshServer; public interface SshRepository { diff --git a/src/main/java/ru/ldeloff/servermonitorbot/integration/out/repository/SshRepositoryImpl.java b/src/main/java/ru/ldeloff/servermonitorbot/repository/SshRepositoryImpl.java similarity index 88% rename from src/main/java/ru/ldeloff/servermonitorbot/integration/out/repository/SshRepositoryImpl.java rename to src/main/java/ru/ldeloff/servermonitorbot/repository/SshRepositoryImpl.java index db1f915..548d66f 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/integration/out/repository/SshRepositoryImpl.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/repository/SshRepositoryImpl.java @@ -1,4 +1,4 @@ -package ru.ldeloff.servermonitorbot.integration.out.repository; +package ru.ldeloff.servermonitorbot.repository; import com.jcraft.jsch.JSch; import com.jcraft.jsch.JSchException; @@ -6,7 +6,7 @@ import com.jcraft.jsch.Session; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Repository; -import ru.ldeloff.servermonitorbot.internal.data.model.SshServer; +import ru.ldeloff.servermonitorbot.model.server.SshServer; @Repository @RequiredArgsConstructor diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/MessagingService.java b/src/main/java/ru/ldeloff/servermonitorbot/service/MessagingService.java new file mode 100644 index 0000000..f4a2707 --- /dev/null +++ b/src/main/java/ru/ldeloff/servermonitorbot/service/MessagingService.java @@ -0,0 +1,9 @@ +package ru.ldeloff.servermonitorbot.service; + +import org.telegram.telegrambots.meta.api.methods.send.SendMessage; + +public interface MessagingService { + void sendMessageToAdmins(String message); + + void send(SendMessage message); +} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/MessagingServiceImpl.java b/src/main/java/ru/ldeloff/servermonitorbot/service/MessagingServiceImpl.java new file mode 100644 index 0000000..938e209 --- /dev/null +++ b/src/main/java/ru/ldeloff/servermonitorbot/service/MessagingServiceImpl.java @@ -0,0 +1,38 @@ +package ru.ldeloff.servermonitorbot.service; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.ApplicationContext; +import org.springframework.stereotype.Service; +import org.telegram.telegrambots.meta.api.methods.send.SendMessage; +import org.telegram.telegrambots.meta.exceptions.TelegramApiException; +import ru.ldeloff.servermonitorbot.controller.TelegramBotController; + + +@Slf4j +@Service +@RequiredArgsConstructor +public class MessagingServiceImpl implements MessagingService { + + private final UserService userService; + private final ApplicationContext applicationContext; + + @Override + public void sendMessageToAdmins(String message) { + userService.getAllAdmins().forEach(user -> { + SendMessage sendMessage = new SendMessage(); + sendMessage.setChatId(user.getTelegramId()); + sendMessage.setText(message); + send(sendMessage); + }); + } + + @Override + public void send(SendMessage message) { + try { + applicationContext.getBean(TelegramBotController.class).execute(message); + } catch (TelegramApiException e) { + log.warn("Ошибка при отправке сообщения", e.getMessage()); + } + } +} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/RoleService.java b/src/main/java/ru/ldeloff/servermonitorbot/service/RoleService.java new file mode 100644 index 0000000..6cd1d70 --- /dev/null +++ b/src/main/java/ru/ldeloff/servermonitorbot/service/RoleService.java @@ -0,0 +1,7 @@ +package ru.ldeloff.servermonitorbot.service; + +import ru.ldeloff.servermonitorbot.model.user.Role; + +public interface RoleService { + Role findRoleByName(String name); +} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/RoleServiceImpl.java b/src/main/java/ru/ldeloff/servermonitorbot/service/RoleServiceImpl.java new file mode 100644 index 0000000..407d0ce --- /dev/null +++ b/src/main/java/ru/ldeloff/servermonitorbot/service/RoleServiceImpl.java @@ -0,0 +1,14 @@ +package ru.ldeloff.servermonitorbot.service; + +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import ru.ldeloff.servermonitorbot.model.user.Role; + +@Service +@RequiredArgsConstructor +public class RoleServiceImpl implements RoleService { + @Override + public Role findRoleByName(String name) { + return Role.valueOf(name); + } +} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/integration/out/service/SshService.java b/src/main/java/ru/ldeloff/servermonitorbot/service/SshService.java similarity index 69% rename from src/main/java/ru/ldeloff/servermonitorbot/integration/out/service/SshService.java rename to src/main/java/ru/ldeloff/servermonitorbot/service/SshService.java index 1fe1e70..3231fb0 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/integration/out/service/SshService.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/service/SshService.java @@ -1,9 +1,9 @@ -package ru.ldeloff.servermonitorbot.integration.out.service; +package ru.ldeloff.servermonitorbot.service; import org.telegram.telegrambots.meta.api.methods.send.SendMessage; -import ru.ldeloff.servermonitorbot.internal.data.model.SshCommand; -import ru.ldeloff.servermonitorbot.internal.data.model.SshServer; +import ru.ldeloff.servermonitorbot.model.SshCommand; +import ru.ldeloff.servermonitorbot.model.server.SshServer; import java.util.List; diff --git a/src/main/java/ru/ldeloff/servermonitorbot/integration/out/service/SshServiceImpl.java b/src/main/java/ru/ldeloff/servermonitorbot/service/SshServiceImpl.java similarity index 69% rename from src/main/java/ru/ldeloff/servermonitorbot/integration/out/service/SshServiceImpl.java rename to src/main/java/ru/ldeloff/servermonitorbot/service/SshServiceImpl.java index 5d7eba9..cda3154 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/integration/out/service/SshServiceImpl.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/service/SshServiceImpl.java @@ -1,4 +1,4 @@ -package ru.ldeloff.servermonitorbot.integration.out.service; +package ru.ldeloff.servermonitorbot.service; import com.jcraft.jsch.ChannelExec; import com.jcraft.jsch.JSchException; @@ -7,10 +7,11 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.methods.send.SendMessage; -import ru.ldeloff.servermonitorbot.config.SshServerList; -import ru.ldeloff.servermonitorbot.internal.data.model.SshCommand; -import ru.ldeloff.servermonitorbot.internal.data.model.SshServer; -import ru.ldeloff.servermonitorbot.integration.out.repository.SshRepository; +import ru.ldeloff.servermonitorbot.model.server.ServerStatus; +import ru.ldeloff.servermonitorbot.model.server.SshServers; +import ru.ldeloff.servermonitorbot.model.SshCommand; +import ru.ldeloff.servermonitorbot.model.server.SshServer; +import ru.ldeloff.servermonitorbot.repository.SshRepository; import java.io.ByteArrayOutputStream; import java.util.ArrayList; @@ -22,16 +23,24 @@ import java.util.Objects; @RequiredArgsConstructor public class SshServiceImpl implements SshService { - private final SshServerList sshServerList; + private final SshServers sshServers; private final SshRepository sshRepository; + private final MessagingService messagingService; @Override public void updateConnection() { - sshServerList.getServers().forEach(sshServer -> { + sshServers.getServers().forEach(sshServer -> { try { sshRepository.connect(sshServer); + updateServerStatus(sshServer, ServerStatus.ONLINE); log.info("Успешно подключён к {}", sshServer.getHost()); } catch (JSchException e) { + if (sshServer.getStatus() == null) { + updateServerStatus(sshServer, ServerStatus.OFFLINE); + } + if (sshServer.getStatus() == ServerStatus.ONLINE) { + updateServerStatus(sshServer, ServerStatus.CONNECTION_LOST); + } log.warn("Не удалось соединиться с {}: {}", sshServer.getHost(), e.getMessage()); } }); @@ -39,18 +48,16 @@ public class SshServiceImpl implements SshService { @Override public void disconnectAllConnections() { - sshServerList.getServers().forEach(sshRepository::disconnect); + sshServers.getServers().forEach(sshRepository::disconnect); } @Override public SendMessage getStatusSessions(SendMessage message) { StringBuilder text = new StringBuilder("Статус соединения (может выполняться долго): \n"); - sshServerList.getServers().forEach(server -> { - text.append(server.getName()) - .append(": ") - .append(checkStatusServer(server)) - .append("\n"); - }); + sshServers.getServers().forEach(server -> text.append(server.getName()) + .append(": ") + .append(checkStatusServer(server)) + .append("\n")); message.setText(text.toString()); return message; } @@ -78,12 +85,12 @@ public class SshServiceImpl implements SshService { @Override public List getAllSshServers() { - return sshServerList.getServers(); + return sshServers.getServers(); } @Override public List getHealthSshServers() { - return sshServerList.getServers().stream().filter(this::checkHealth).toList(); + return sshServers.getServers().stream().filter(this::checkHealth).toList(); } @Override @@ -127,4 +134,13 @@ public class SshServiceImpl implements SshService { } return sshCommands; } + + public void updateServerStatus(SshServer server, ServerStatus newStatus) { + ServerStatus oldStatus = server.getStatus(); + if (oldStatus != newStatus) { + server.setStatus(newStatus); + messagingService.sendMessageToAdmins("Server status changed for " + server.getName() + + ": " + oldStatus + " -> " + newStatus); + } + } } diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/UserService.java b/src/main/java/ru/ldeloff/servermonitorbot/service/UserService.java new file mode 100644 index 0000000..566ac80 --- /dev/null +++ b/src/main/java/ru/ldeloff/servermonitorbot/service/UserService.java @@ -0,0 +1,16 @@ +package ru.ldeloff.servermonitorbot.service; + +import ru.ldeloff.servermonitorbot.model.user.User; + +import java.util.List; + +public interface UserService { + + void saveOrUpdateUser(User user); + + User getByTelegramId(Long id); + + List getAllUsers(); + + List getAllAdmins(); +} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/UserServiceImpl.java b/src/main/java/ru/ldeloff/servermonitorbot/service/UserServiceImpl.java new file mode 100644 index 0000000..380dcd1 --- /dev/null +++ b/src/main/java/ru/ldeloff/servermonitorbot/service/UserServiceImpl.java @@ -0,0 +1,42 @@ +package ru.ldeloff.servermonitorbot.service; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import ru.ldeloff.servermonitorbot.model.user.Role; +import ru.ldeloff.servermonitorbot.model.user.User; +import ru.ldeloff.servermonitorbot.model.user.Users; + +import java.util.List; + +@Slf4j +@Service +@RequiredArgsConstructor +public class UserServiceImpl implements UserService { + + private final Users users; + + @Override + public void saveOrUpdateUser(User user) { + if (getByTelegramId(user.getTelegramId()) == null) { + users.getUsers().add(user); + } + } + + @Override + public User getByTelegramId(Long telegramId) { + return users.getUsers().stream() + .filter(user -> user.getTelegramId().equals(telegramId)) + .findFirst() + .orElse(null); + } + + @Override + public List getAllUsers() {return users.getUsers(); } + + @Override + public List getAllAdmins() { + return users.getUsers().stream().filter(user -> user.getRole().equals(Role.ADMIN)).toList(); + } + +} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/internal/template/util/UpdateUtil.java b/src/main/java/ru/ldeloff/servermonitorbot/util/UpdateUtil.java similarity index 57% rename from src/main/java/ru/ldeloff/servermonitorbot/internal/template/util/UpdateUtil.java rename to src/main/java/ru/ldeloff/servermonitorbot/util/UpdateUtil.java index 098dc8d..a4cd7bb 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/internal/template/util/UpdateUtil.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/util/UpdateUtil.java @@ -1,19 +1,19 @@ -package ru.ldeloff.servermonitorbot.internal.template.util; +package ru.ldeloff.servermonitorbot.util; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.objects.Update; -import ru.ldeloff.servermonitorbot.internal.data.model.Role; -import ru.ldeloff.servermonitorbot.internal.data.model.User; -import ru.ldeloff.servermonitorbot.internal.data.service.RoleService; -import ru.ldeloff.servermonitorbot.internal.data.service.UserService; +import ru.ldeloff.servermonitorbot.model.user.Role; +import ru.ldeloff.servermonitorbot.model.user.User; +import ru.ldeloff.servermonitorbot.service.UserService; + +import java.util.List; @Service @RequiredArgsConstructor public class UpdateUtil { private final UserService userService; - private final RoleService roleService; public User getUser(Update update) { long id = -1L; @@ -22,23 +22,19 @@ public class UpdateUtil { id = update.getMessage().getChat().getId(); login = update.getMessage().getChat().getUserName(); } else if (update.hasCallbackQuery()) { - id = update.getCallbackQuery().getMessage().getChat().getId(); - login = update.getCallbackQuery().getMessage().getChat().getUserName(); + id = update.getCallbackQuery().getMessage().getChatId(); + login = update.getCallbackQuery().getFrom().getUserName(); } User user = userService.getByTelegramId(id); if (user == null) { user = new User(); user.setTelegramId(id); - user.setRole(roleService.findRoleById(3L)); + user.setRole(Role.ANONYMOUS); } user.setLogin(login); return user; } - public Role getRole(Update update) { - return getUser(update).getRole(); - } - public String getMessage(Update update) { if (update.hasMessage()) { return update.getMessage().getText(); @@ -48,8 +44,8 @@ public class UpdateUtil { return ""; } - public boolean roleChecker(Update update, long expectedRole) { + public boolean roleChecker(Update update, List expectedRoles) { User user = getUser(update); - return user.getRole().getId() <= expectedRole; + return expectedRoles.contains(user.getRole()); } } diff --git a/src/main/java/ru/ldeloff/servermonitorbot/internal/mainmenu/service/FirstUseCommand.java b/src/main/java/ru/ldeloff/servermonitorbot/view/FirstUseCommand.java similarity index 59% rename from src/main/java/ru/ldeloff/servermonitorbot/internal/mainmenu/service/FirstUseCommand.java rename to src/main/java/ru/ldeloff/servermonitorbot/view/FirstUseCommand.java index bc84e3b..0a6d48d 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/internal/mainmenu/service/FirstUseCommand.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/view/FirstUseCommand.java @@ -1,21 +1,20 @@ -package ru.ldeloff.servermonitorbot.internal.mainmenu.service; +package ru.ldeloff.servermonitorbot.view; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.methods.send.SendMessage; -import ru.ldeloff.servermonitorbot.internal.template.CommandTemplate; -import ru.ldeloff.servermonitorbot.internal.template.util.UpdateUtil; -import ru.ldeloff.servermonitorbot.internal.data.model.User; -import ru.ldeloff.servermonitorbot.integration.out.service.SshService; -import ru.ldeloff.servermonitorbot.internal.ui.ServerListButtons; -import ru.ldeloff.servermonitorbot.internal.ui.TelegramBotKeyboard; +import ru.ldeloff.servermonitorbot.commands.CommandTemplate; +import ru.ldeloff.servermonitorbot.service.MessagingService; +import ru.ldeloff.servermonitorbot.util.UpdateUtil; +import ru.ldeloff.servermonitorbot.model.user.User; +import ru.ldeloff.servermonitorbot.service.SshService; @Service public class FirstUseCommand extends CommandTemplate { private final TelegramBotKeyboard telegramBotKeyboard; - public FirstUseCommand(UpdateUtil updateUtil, ServerListButtons serverListButtons, SshService sshService, TelegramBotKeyboard telegramBotKeyboard) { - super(updateUtil, serverListButtons, sshService); + public FirstUseCommand(UpdateUtil updateUtil, ServerListButtons serverListButtons, SshService sshService, TelegramBotKeyboard telegramBotKeyboard, MessagingService messagingService) { + super(updateUtil, serverListButtons, sshService, messagingService); this.telegramBotKeyboard = telegramBotKeyboard; setName("/start"); } diff --git a/src/main/java/ru/ldeloff/servermonitorbot/internal/ui/ServerListButtons.java b/src/main/java/ru/ldeloff/servermonitorbot/view/ServerListButtons.java similarity index 94% rename from src/main/java/ru/ldeloff/servermonitorbot/internal/ui/ServerListButtons.java rename to src/main/java/ru/ldeloff/servermonitorbot/view/ServerListButtons.java index b2a8ebb..aeb70b7 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/internal/ui/ServerListButtons.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/view/ServerListButtons.java @@ -1,11 +1,11 @@ -package ru.ldeloff.servermonitorbot.internal.ui; +package ru.ldeloff.servermonitorbot.view; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; import org.telegram.telegrambots.meta.api.methods.send.SendMessage; import org.telegram.telegrambots.meta.api.objects.replykeyboard.InlineKeyboardMarkup; import org.telegram.telegrambots.meta.api.objects.replykeyboard.buttons.InlineKeyboardButton; -import ru.ldeloff.servermonitorbot.integration.out.service.SshService; +import ru.ldeloff.servermonitorbot.service.SshService; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/ru/ldeloff/servermonitorbot/internal/mainmenu/service/SwitchToMainMenu.java b/src/main/java/ru/ldeloff/servermonitorbot/view/SwitchToMainMenu.java similarity index 63% rename from src/main/java/ru/ldeloff/servermonitorbot/internal/mainmenu/service/SwitchToMainMenu.java rename to src/main/java/ru/ldeloff/servermonitorbot/view/SwitchToMainMenu.java index b61c882..bbd5d59 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/internal/mainmenu/service/SwitchToMainMenu.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/view/SwitchToMainMenu.java @@ -1,14 +1,13 @@ -package ru.ldeloff.servermonitorbot.internal.mainmenu.service; +package ru.ldeloff.servermonitorbot.view; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.methods.send.SendMessage; -import ru.ldeloff.servermonitorbot.internal.template.CommandTemplate; -import ru.ldeloff.servermonitorbot.internal.template.util.UpdateUtil; -import ru.ldeloff.servermonitorbot.internal.data.model.User; -import ru.ldeloff.servermonitorbot.integration.out.service.SshService; -import ru.ldeloff.servermonitorbot.internal.ui.ServerListButtons; -import ru.ldeloff.servermonitorbot.internal.ui.TelegramBotKeyboard; +import ru.ldeloff.servermonitorbot.commands.CommandTemplate; +import ru.ldeloff.servermonitorbot.service.MessagingService; +import ru.ldeloff.servermonitorbot.util.UpdateUtil; +import ru.ldeloff.servermonitorbot.model.user.User; +import ru.ldeloff.servermonitorbot.service.SshService; @Service @Slf4j @@ -16,8 +15,8 @@ public class SwitchToMainMenu extends CommandTemplate { private final TelegramBotKeyboard telegramBotKeyboard; - public SwitchToMainMenu(UpdateUtil updateUtil, ServerListButtons serverListButtons, SshService sshService, TelegramBotKeyboard telegramBotKeyboard) { - super(updateUtil, serverListButtons, sshService); + public SwitchToMainMenu(UpdateUtil updateUtil, ServerListButtons serverListButtons, SshService sshService, TelegramBotKeyboard telegramBotKeyboard, MessagingService messagingService) { + super(updateUtil, serverListButtons, sshService, messagingService); this.telegramBotKeyboard = telegramBotKeyboard; setName("Not found"); } diff --git a/src/main/java/ru/ldeloff/servermonitorbot/internal/ui/TelegramBotKeyboard.java b/src/main/java/ru/ldeloff/servermonitorbot/view/TelegramBotKeyboard.java similarity index 75% rename from src/main/java/ru/ldeloff/servermonitorbot/internal/ui/TelegramBotKeyboard.java rename to src/main/java/ru/ldeloff/servermonitorbot/view/TelegramBotKeyboard.java index da91e3c..7bb7b03 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/internal/ui/TelegramBotKeyboard.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/view/TelegramBotKeyboard.java @@ -1,24 +1,25 @@ -package ru.ldeloff.servermonitorbot.internal.ui; +package ru.ldeloff.servermonitorbot.view; import lombok.RequiredArgsConstructor; import org.springframework.context.ApplicationContext; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; import org.telegram.telegrambots.meta.api.methods.send.SendMessage; import org.telegram.telegrambots.meta.api.objects.replykeyboard.ReplyKeyboardMarkup; import org.telegram.telegrambots.meta.api.objects.replykeyboard.buttons.KeyboardButton; import org.telegram.telegrambots.meta.api.objects.replykeyboard.buttons.KeyboardRow; -import ru.ldeloff.servermonitorbot.internal.data.model.Role; -import ru.ldeloff.servermonitorbot.internal.data.model.User; -import ru.ldeloff.servermonitorbot.internal.data.service.UserService; -import ru.ldeloff.servermonitorbot.internal.template.CommandTemplate; -import ru.ldeloff.servermonitorbot.internal.ui.util.CommandUtil; +import ru.ldeloff.servermonitorbot.model.user.Role; +import ru.ldeloff.servermonitorbot.model.user.User; +import ru.ldeloff.servermonitorbot.service.UserService; +import ru.ldeloff.servermonitorbot.commands.CommandTemplate; import java.util.ArrayList; -import java.util.HashMap; +import java.util.List; import java.util.Map; +import static ru.ldeloff.servermonitorbot.model.user.Role.ADMIN; +import static ru.ldeloff.servermonitorbot.model.user.Role.USER; + @Component @RequiredArgsConstructor public class TelegramBotKeyboard implements UiFormer { @@ -34,17 +35,17 @@ public class TelegramBotKeyboard implements UiFormer { String chatId = message.getChatId(); User user = userService.getByTelegramId(Long.parseLong(chatId)); - Role role = user.getRole(); - ArrayList keyboardRows = formKeyboard(role.getId()); + ArrayList keyboardRows = formKeyboard(user); replyKeyboardMarkup.setKeyboard(keyboardRows); message.setReplyMarkup(replyKeyboardMarkup); return message; } - private ArrayList formKeyboard(long role) { + private ArrayList formKeyboard(User user) { + Role role = user.getRole(); Map commands = applicationContext.getBeansOfType(CommandTemplate.class); - if (role < 3) { + if (List.of(ADMIN, USER).contains(role)) { commands.remove("/start"); commands.remove("Not found"); } @@ -54,7 +55,7 @@ public class TelegramBotKeyboard implements UiFormer { KeyboardRow keyboardRow = new KeyboardRow(); for (Map.Entry entry : commands.entrySet()) { - if (role <= entry.getValue().getExpectedRole()) { + if (entry.getValue().getExpectedRole().contains(role)) { keyboardRow.add(new KeyboardButton(entry.getValue().getName())); } if (keyboardRow.size()>=buttonOnLine) { diff --git a/src/main/java/ru/ldeloff/servermonitorbot/internal/ui/UiFormer.java b/src/main/java/ru/ldeloff/servermonitorbot/view/UiFormer.java similarity index 74% rename from src/main/java/ru/ldeloff/servermonitorbot/internal/ui/UiFormer.java rename to src/main/java/ru/ldeloff/servermonitorbot/view/UiFormer.java index 69f6730..0ba554a 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/internal/ui/UiFormer.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/view/UiFormer.java @@ -1,4 +1,4 @@ -package ru.ldeloff.servermonitorbot.internal.ui; +package ru.ldeloff.servermonitorbot.view; import org.telegram.telegrambots.meta.api.methods.send.SendMessage; diff --git a/src/main/resources/db/migration/V001__create_table_users.sql b/src/main/resources/db/migration/V001__create_table_users.sql deleted file mode 100644 index 058d3f4..0000000 --- a/src/main/resources/db/migration/V001__create_table_users.sql +++ /dev/null @@ -1,15 +0,0 @@ ---changeset L_DelOff:create_table_users rollbackSplitStatements:true ---comment: Создание таблицы пользователей -CREATE TABLE users -( - id SERIAL PRIMARY KEY, - login VARCHAR(128), - id_role integer -); - -COMMENT ON TABLE users IS 'Пользователи'; -COMMENT ON COLUMN users.id IS 'Идентификатор пользователя'; -COMMENT ON COLUMN users.login IS 'Логин пользователя'; -COMMENT ON COLUMN users.id_role IS 'Ссылка на роль пользователя'; - ---rollback DROP TABLE users; \ No newline at end of file diff --git a/src/main/resources/db/migration/V002__create_table_roles.sql b/src/main/resources/db/migration/V002__create_table_roles.sql deleted file mode 100644 index 76c5559..0000000 --- a/src/main/resources/db/migration/V002__create_table_roles.sql +++ /dev/null @@ -1,13 +0,0 @@ ---changeset L_DelOff:create_table_roles rollbackSplitStatements:true ---comment: Создание таблицы ролей -CREATE TABLE roles -( - id SERIAL PRIMARY KEY, - role VARCHAR(128) -); - -COMMENT ON TABLE roles IS 'Пользователи'; -COMMENT ON COLUMN roles.id IS 'Идентификатор пользователя'; -COMMENT ON COLUMN roles.role IS 'Логин пользователя'; - ---rollback DROP TABLE roles; \ No newline at end of file diff --git a/src/main/resources/db/migration/V003__add_FK_users_to_roles.sql b/src/main/resources/db/migration/V003__add_FK_users_to_roles.sql deleted file mode 100644 index 6225766..0000000 --- a/src/main/resources/db/migration/V003__add_FK_users_to_roles.sql +++ /dev/null @@ -1,2 +0,0 @@ -ALTER TABLE users -ADD COLUMN role_id INT NOT NULL REFERENCES roles(id); \ No newline at end of file diff --git a/src/main/resources/db/migration/V004__add_roles.sql b/src/main/resources/db/migration/V004__add_roles.sql deleted file mode 100644 index 65c0cbf..0000000 --- a/src/main/resources/db/migration/V004__add_roles.sql +++ /dev/null @@ -1,2 +0,0 @@ -INSERT INTO roles (id, role) VALUES (1, 'ADMIN'); -INSERT INTO roles (id, role) VALUES (2, 'USER'); \ No newline at end of file diff --git a/src/main/resources/db/migration/V005__add_anonymous_role.sql b/src/main/resources/db/migration/V005__add_anonymous_role.sql deleted file mode 100644 index ba5a19a..0000000 --- a/src/main/resources/db/migration/V005__add_anonymous_role.sql +++ /dev/null @@ -1 +0,0 @@ -INSERT INTO roles (id, role) VALUES (3, 'ANONYMOUS'); \ No newline at end of file diff --git a/src/main/resources/db/migration/V006__refactor_users_table.sql b/src/main/resources/db/migration/V006__refactor_users_table.sql deleted file mode 100644 index 4a51d65..0000000 --- a/src/main/resources/db/migration/V006__refactor_users_table.sql +++ /dev/null @@ -1,9 +0,0 @@ -ALTER TABLE users - DROP COLUMN login; - -ALTER TABLE users - ADD COLUMN telegram_id INTEGER UNIQUE; - COMMENT ON COLUMN users.telegram_id IS 'Telegram ID пользователя'; - -ALTER TABLE users - DROP COLUMN id_role; \ No newline at end of file diff --git a/src/main/resources/db/migration/V007__refactor_roles_table.sql b/src/main/resources/db/migration/V007__refactor_roles_table.sql deleted file mode 100644 index c39ec05..0000000 --- a/src/main/resources/db/migration/V007__refactor_roles_table.sql +++ /dev/null @@ -1,6 +0,0 @@ -ALTER TABLE roles - DROP COLUMN role; - -ALTER TABLE roles - ADD COLUMN name VARCHAR(128); -COMMENT ON COLUMN roles.name IS 'Имя роли'; \ No newline at end of file diff --git a/src/main/resources/db/migration/V008__add_roles.sql b/src/main/resources/db/migration/V008__add_roles.sql deleted file mode 100644 index cdce579..0000000 --- a/src/main/resources/db/migration/V008__add_roles.sql +++ /dev/null @@ -1,4 +0,0 @@ -TRUNCATE TABLE roles CASCADE; -INSERT INTO roles (id, name) VALUES (1, 'ADMIN'); -INSERT INTO roles (id, name) VALUES (2, 'USER'); -INSERT INTO roles (id, name) VALUES (3, 'ANONYMOUS'); \ No newline at end of file