Verwarnungssystem #35 #235
35
kdb-bot/src/bot_data/abc/user_warning_repository_abc.py
Normal file
35
kdb-bot/src/bot_data/abc/user_warning_repository_abc.py
Normal file
@ -0,0 +1,35 @@
|
||||
from abc import ABC, abstractmethod
|
||||
|
||||
from cpl_query.extension import List
|
||||
|
||||
from bot_data.model.user_warnings import UserWarnings
|
||||
|
||||
|
||||
class UserWarningsRepositoryABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_user_warnings(self) -> List[UserWarnings]:
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_user_warnings_by_id(self, id: int) -> UserWarnings:
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_user_warnings_by_user_id(self, user_id: int) -> List[UserWarnings]:
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def add_user_warnings(self, user_warnings: UserWarnings):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def update_user_warnings(self, user_warnings: UserWarnings):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def delete_user_warnings(self, user_warnings: UserWarnings):
|
||||
pass
|
@ -21,6 +21,7 @@ from bot_data.abc.user_message_count_per_hour_repository_abc import (
|
||||
UserMessageCountPerHourRepositoryABC,
|
||||
)
|
||||
from bot_data.abc.user_repository_abc import UserRepositoryABC
|
||||
from bot_data.abc.user_warning_repository_abc import UserWarningsRepositoryABC
|
||||
from bot_data.service.api_key_repository_service import ApiKeyRepositoryService
|
||||
from bot_data.service.auth_user_repository_service import AuthUserRepositoryService
|
||||
from bot_data.service.auto_role_repository_service import AutoRoleRepositoryService
|
||||
@ -40,6 +41,7 @@ from bot_data.service.user_message_count_per_hour_repository_service import (
|
||||
UserMessageCountPerHourRepositoryService,
|
||||
)
|
||||
from bot_data.service.user_repository_service import UserRepositoryService
|
||||
from bot_data.service.user_warnings_repository_service import UserWarningsRepositoryService
|
||||
|
||||
|
||||
class DataModule(ModuleABC):
|
||||
@ -61,6 +63,7 @@ class DataModule(ModuleABC):
|
||||
services.add_transient(UserJoinedGameServerRepositoryABC, UserJoinedGameServerRepositoryService)
|
||||
services.add_transient(AutoRoleRepositoryABC, AutoRoleRepositoryService)
|
||||
services.add_transient(LevelRepositoryABC, LevelRepositoryService)
|
||||
services.add_transient(UserWarningsRepositoryABC, UserWarningsRepositoryService)
|
||||
services.add_transient(
|
||||
UserMessageCountPerHourRepositoryABC,
|
||||
UserMessageCountPerHourRepositoryService,
|
||||
|
@ -6,7 +6,8 @@ from cpl_core.database import TableABC
|
||||
from bot_data.model.user import User
|
||||
|
||||
|
||||
class UserWarning(TableABC):
|
||||
# had to name it UserWarnings instead of UserWarning because UserWarning is a builtin class
|
||||
class UserWarnings(TableABC):
|
||||
def __init__(
|
||||
self,
|
||||
description: str,
|
@ -0,0 +1,74 @@
|
||||
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.user_repository_abc import UserRepositoryABC
|
||||
from bot_data.abc.user_warning_repository_abc import UserWarningsRepositoryABC
|
||||
from bot_data.model.user_warnings import UserWarnings
|
||||
|
||||
|
||||
class UserWarningsRepositoryService(UserWarningsRepositoryABC):
|
||||
def __init__(
|
||||
self,
|
||||
logger: DatabaseLogger,
|
||||
db_context: DatabaseContextABC,
|
||||
users: UserRepositoryABC,
|
||||
):
|
||||
self._logger = logger
|
||||
edraft marked this conversation as resolved
Outdated
|
||||
self._context = db_context
|
||||
|
||||
self._users = users
|
||||
UserWarningsRepositoryABC.__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 _from_result(self, sql_result: tuple) -> UserWarnings:
|
||||
return UserWarnings(
|
||||
self._get_value_from_result(sql_result[1]),
|
||||
self._get_value_from_result(sql_result[2]),
|
||||
self._get_value_from_result(sql_result[3]),
|
||||
self._get_value_from_result(sql_result[4]),
|
||||
self._get_value_from_result(sql_result[0]),
|
||||
)
|
||||
|
||||
def get_user_warnings(self) -> List[UserWarnings]:
|
||||
warnings = List(UserWarnings)
|
||||
self._logger.trace(__name__, f"Send SQL command: {UserWarnings.get_select_all_string()}")
|
||||
results = self._context.select(UserWarnings.get_select_all_string())
|
||||
for result in results:
|
||||
warnings.append(self._from_result(result))
|
||||
|
||||
return warnings
|
||||
|
||||
def get_user_warnings_by_id(self, id: int) -> UserWarnings:
|
||||
self._logger.trace(__name__, f"Send SQL command: {UserWarnings.get_select_by_id_string(id)}")
|
||||
result = self._context.select(UserWarnings.get_select_by_id_string(id))[0]
|
||||
return self._from_result(result)
|
||||
|
||||
def get_user_warnings_by_user_id(self, user_id: int) -> List[UserWarnings]:
|
||||
warnings = List(UserWarnings)
|
||||
self._logger.trace(__name__, f"Send SQL command: {UserWarnings.get_select_by_user_id_string(user_id)}")
|
||||
results = self._context.select(UserWarnings.get_select_by_user_id_string(user_id))
|
||||
for result in results:
|
||||
warnings.append(self._from_result(result))
|
||||
|
||||
return warnings
|
||||
|
||||
def add_user_warnings(self, user_warnings: UserWarnings):
|
||||
self._logger.trace(__name__, f"Send SQL command: {user_warnings.insert_string}")
|
||||
self._context.cursor.execute(user_warnings.insert_string)
|
||||
|
||||
def update_user_warnings(self, user_warnings: UserWarnings):
|
||||
self._logger.trace(__name__, f"Send SQL command: {user_warnings.udpate_string}")
|
||||
self._context.cursor.execute(user_warnings.udpate_string)
|
||||
|
||||
def delete_user_warnings(self, user_warnings: UserWarnings):
|
||||
self._logger.trace(__name__, f"Send SQL command: {user_warnings.delete_string}")
|
||||
self._context.cursor.execute(user_warnings.delete_string)
|
Loading…
Reference in New Issue
Block a user
Du übergibst
servers: ServerRepositoryABC
aber dies wird in der Definition von des Constructors nirgendswo zugewiesen.Ich sehe auch nicht dass
self._servers
in der Klasse irgendwo verwendet wird. Somit könnte der Parameter weg.