Added repo #378
This commit is contained in:
		
							
								
								
									
										40
									
								
								kdb-bot/src/bot_data/abc/short_role_name_repository_abc.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								kdb-bot/src/bot_data/abc/short_role_name_repository_abc.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,40 @@
 | 
			
		||||
from abc import ABC, abstractmethod
 | 
			
		||||
from typing import Optional
 | 
			
		||||
 | 
			
		||||
from cpl_query.extension import List
 | 
			
		||||
 | 
			
		||||
from bot_data.model.short_role_name import ShortRoleName
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ShortRoleNameRepositoryABC(ABC):
 | 
			
		||||
    @abstractmethod
 | 
			
		||||
    def __init__(self):
 | 
			
		||||
        pass
 | 
			
		||||
 | 
			
		||||
    @abstractmethod
 | 
			
		||||
    def get_short_role_names(self) -> List[ShortRoleName]:
 | 
			
		||||
        pass
 | 
			
		||||
 | 
			
		||||
    @abstractmethod
 | 
			
		||||
    def get_short_role_name_by_id(self, id: int) -> ShortRoleName:
 | 
			
		||||
        pass
 | 
			
		||||
 | 
			
		||||
    @abstractmethod
 | 
			
		||||
    def find_short_role_name_by_role_id(self, role_id: int) -> Optional[ShortRoleName]:
 | 
			
		||||
        pass
 | 
			
		||||
 | 
			
		||||
    @abstractmethod
 | 
			
		||||
    def get_short_role_names_by_server_id(self, id: int) -> List[ShortRoleName]:
 | 
			
		||||
        pass
 | 
			
		||||
 | 
			
		||||
    @abstractmethod
 | 
			
		||||
    def add_short_role_name(self, short_role_name: ShortRoleName):
 | 
			
		||||
        pass
 | 
			
		||||
 | 
			
		||||
    @abstractmethod
 | 
			
		||||
    def update_short_role_name(self, short_role_name: ShortRoleName):
 | 
			
		||||
        pass
 | 
			
		||||
 | 
			
		||||
    @abstractmethod
 | 
			
		||||
    def delete_short_role_name(self, short_role_name: ShortRoleName):
 | 
			
		||||
        pass
 | 
			
		||||
@@ -16,6 +16,7 @@ from bot_data.abc.known_user_repository_abc import KnownUserRepositoryABC
 | 
			
		||||
from bot_data.abc.level_repository_abc import LevelRepositoryABC
 | 
			
		||||
from bot_data.abc.server_config_repository_abc import ServerConfigRepositoryABC
 | 
			
		||||
from bot_data.abc.server_repository_abc import ServerRepositoryABC
 | 
			
		||||
from bot_data.abc.short_role_name_repository_abc import ShortRoleNameRepositoryABC
 | 
			
		||||
from bot_data.abc.technician_config_repository_abc import TechnicianConfigRepositoryABC
 | 
			
		||||
from bot_data.abc.user_game_ident_repository_abc import UserGameIdentRepositoryABC
 | 
			
		||||
from bot_data.abc.user_joined_game_server_repository_abc import UserJoinedGameServerRepositoryABC
 | 
			
		||||
@@ -41,6 +42,7 @@ from bot_data.service.seeder_service import SeederService
 | 
			
		||||
from bot_data.service.server_config_repository_service import ServerConfigRepositoryService
 | 
			
		||||
from bot_data.service.server_config_seeder import ServerConfigSeeder
 | 
			
		||||
from bot_data.service.server_repository_service import ServerRepositoryService
 | 
			
		||||
from bot_data.service.short_role_name_repository_service import ShortRoleNameRepositoryService
 | 
			
		||||
from bot_data.service.technician_config_repository_service import TechnicianConfigRepositoryService
 | 
			
		||||
from bot_data.service.technician_config_seeder import TechnicianConfigSeeder
 | 
			
		||||
from bot_data.service.user_game_ident_repository_service import UserGameIdentRepositoryService
 | 
			
		||||
@@ -89,6 +91,7 @@ class DataModule(ModuleABC):
 | 
			
		||||
        services.add_transient(AchievementRepositoryABC, AchievementRepositoryService)
 | 
			
		||||
        services.add_transient(TechnicianConfigRepositoryABC, TechnicianConfigRepositoryService)
 | 
			
		||||
        services.add_transient(ServerConfigRepositoryABC, ServerConfigRepositoryService)
 | 
			
		||||
        services.add_transient(ShortRoleNameRepositoryABC, ShortRoleNameRepositoryService)
 | 
			
		||||
 | 
			
		||||
        services.add_transient(SeederService)
 | 
			
		||||
        services.add_transient(DataSeederABC, TechnicianConfigSeeder)
 | 
			
		||||
 
 | 
			
		||||
@@ -84,6 +84,15 @@ class ShortRoleName(TableABC):
 | 
			
		||||
        """
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def get_select_by_role_id_string(id: int) -> str:
 | 
			
		||||
        return str(
 | 
			
		||||
            f"""
 | 
			
		||||
            SELECT * FROM `ShortRoleNames`
 | 
			
		||||
            WHERE `DiscordRoleId` = {id};
 | 
			
		||||
        """
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def get_select_by_server_id_string(id: int) -> str:
 | 
			
		||||
        return str(
 | 
			
		||||
@@ -98,10 +107,11 @@ class ShortRoleName(TableABC):
 | 
			
		||||
        return str(
 | 
			
		||||
            f"""
 | 
			
		||||
            INSERT INTO `ShortRoleNames` (
 | 
			
		||||
                `Name`, `DiscordRoleId`, `ServerId`
 | 
			
		||||
                `Name`, `DiscordRoleId`, `Position`, `ServerId`
 | 
			
		||||
            ) VALUES (
 | 
			
		||||
                '{self._name}',
 | 
			
		||||
                {self._discord_role_id}
 | 
			
		||||
                '{self._position}',
 | 
			
		||||
                {self._server.id},
 | 
			
		||||
            );
 | 
			
		||||
        """
 | 
			
		||||
@@ -114,6 +124,7 @@ class ShortRoleName(TableABC):
 | 
			
		||||
            UPDATE `ShortRoleNames`
 | 
			
		||||
            SET `Name` = '{self._name}',
 | 
			
		||||
            `DiscordRoleId` = {self._discord_role_id},
 | 
			
		||||
            `Position` = '{self._position}',
 | 
			
		||||
            `ServerId` = {self._server.id}
 | 
			
		||||
            WHERE `Id` = {self._id};
 | 
			
		||||
        """
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,93 @@
 | 
			
		||||
from typing import Optional
 | 
			
		||||
 | 
			
		||||
from cpl_core.database.context import DatabaseContextABC
 | 
			
		||||
from cpl_query.extension import List
 | 
			
		||||
 | 
			
		||||
from bot_core.logging.database_logger import DatabaseLogger
 | 
			
		||||
from bot_data.abc.server_repository_abc import ServerRepositoryABC
 | 
			
		||||
from bot_data.abc.short_role_name_repository_abc import ShortRoleNameRepositoryABC
 | 
			
		||||
from bot_data.model.short_role_name import ShortRoleName
 | 
			
		||||
from bot_data.model.short_role_name_position_enum import ShortRoleNamePositionEnum
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class ShortRoleNameRepositoryService(ShortRoleNameRepositoryABC):
 | 
			
		||||
    def __init__(
 | 
			
		||||
        self,
 | 
			
		||||
        logger: DatabaseLogger,
 | 
			
		||||
        db_context: DatabaseContextABC,
 | 
			
		||||
        servers: ServerRepositoryABC,
 | 
			
		||||
    ):
 | 
			
		||||
        self._logger = logger
 | 
			
		||||
        self._context = db_context
 | 
			
		||||
 | 
			
		||||
        self._servers = servers
 | 
			
		||||
 | 
			
		||||
        ShortRoleNameRepositoryABC.__init__(self)
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def _get_value_from_result(value: any) -> Optional[any]:
 | 
			
		||||
        if isinstance(value, str) and "NULL" in value:
 | 
			
		||||
            return None
 | 
			
		||||
 | 
			
		||||
        return value
 | 
			
		||||
 | 
			
		||||
    def _short_role_name_from_result(self, sql_result: tuple) -> ShortRoleName:
 | 
			
		||||
        return ShortRoleName(
 | 
			
		||||
            self._get_value_from_result(sql_result[1]),  # name
 | 
			
		||||
            int(self._get_value_from_result(sql_result[2])),  # role_id
 | 
			
		||||
            ShortRoleNamePositionEnum(self._get_value_from_result(sql_result[3])),  # position
 | 
			
		||||
            self._servers.get_server_by_id(sql_result[4]),  # server
 | 
			
		||||
            self._get_value_from_result(sql_result[5]),  # created_at
 | 
			
		||||
            self._get_value_from_result(sql_result[6]),  # modified_at
 | 
			
		||||
            id=self._get_value_from_result(sql_result[0]),  # id
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
    def get_short_role_names(self) -> List[ShortRoleName]:
 | 
			
		||||
        short_role_names = List(ShortRoleName)
 | 
			
		||||
        self._logger.trace(__name__, f"Send SQL command: {ShortRoleName.get_select_all_string()}")
 | 
			
		||||
        results = self._context.select(ShortRoleName.get_select_all_string())
 | 
			
		||||
        for result in results:
 | 
			
		||||
            self._logger.trace(__name__, f"Get short_role_name with id {result[0]}")
 | 
			
		||||
            short_role_names.append(self._short_role_name_from_result(result))
 | 
			
		||||
 | 
			
		||||
        return short_role_names
 | 
			
		||||
 | 
			
		||||
    def get_short_role_name_by_id(self, id: int) -> ShortRoleName:
 | 
			
		||||
        self._logger.trace(__name__, f"Send SQL command: {ShortRoleName.get_select_by_id_string(id)}")
 | 
			
		||||
        result = self._context.select(ShortRoleName.get_select_by_id_string(id))[0]
 | 
			
		||||
 | 
			
		||||
        return self._short_role_name_from_result(result)
 | 
			
		||||
 | 
			
		||||
    def find_short_role_name_by_role_id(self, role_id: int) -> Optional[ShortRoleName]:
 | 
			
		||||
        self._logger.trace(__name__, f"Send SQL command: {ShortRoleName.get_select_by_role_id_string(role_id)}")
 | 
			
		||||
        result = self._context.select(ShortRoleName.get_select_by_role_id_string(role_id))
 | 
			
		||||
        if result is None or len(result) == 0:
 | 
			
		||||
            return None
 | 
			
		||||
 | 
			
		||||
        return self._short_role_name_from_result(result[0])
 | 
			
		||||
 | 
			
		||||
    def get_short_role_names_by_server_id(self, server_id: int) -> List[ShortRoleName]:
 | 
			
		||||
        short_role_names = List(ShortRoleName)
 | 
			
		||||
        self._logger.trace(
 | 
			
		||||
            __name__,
 | 
			
		||||
            f"Send SQL command: {ShortRoleName.get_select_by_server_id_string(server_id)}",
 | 
			
		||||
        )
 | 
			
		||||
        results = self._context.select(ShortRoleName.get_select_by_server_id_string(server_id))
 | 
			
		||||
 | 
			
		||||
        for result in results:
 | 
			
		||||
            self._logger.trace(__name__, f"Get short_role_name with id {result[0]}")
 | 
			
		||||
            short_role_names.append(self._short_role_name_from_result(result))
 | 
			
		||||
 | 
			
		||||
        return short_role_names
 | 
			
		||||
 | 
			
		||||
    def add_short_role_name(self, short_role_name: ShortRoleName):
 | 
			
		||||
        self._logger.trace(__name__, f"Send SQL command: {short_role_name.insert_string}")
 | 
			
		||||
        self._context.cursor.execute(short_role_name.insert_string)
 | 
			
		||||
 | 
			
		||||
    def update_short_role_name(self, short_role_name: ShortRoleName):
 | 
			
		||||
        self._logger.trace(__name__, f"Send SQL command: {short_role_name.udpate_string}")
 | 
			
		||||
        self._context.cursor.execute(short_role_name.udpate_string)
 | 
			
		||||
 | 
			
		||||
    def delete_short_role_name(self, short_role_name: ShortRoleName):
 | 
			
		||||
        self._logger.trace(__name__, f"Send SQL command: {short_role_name.delete_string}")
 | 
			
		||||
        self._context.cursor.execute(short_role_name.delete_string)
 | 
			
		||||
		Reference in New Issue
	
	Block a user