Added GameServer handling & commands #238
This commit is contained in:
39
kdb-bot/src/bot_data/abc/game_server_repository_abc.py
Normal file
39
kdb-bot/src/bot_data/abc/game_server_repository_abc.py
Normal file
@@ -0,0 +1,39 @@
|
||||
from abc import ABC, abstractmethod
|
||||
|
||||
from cpl_query.extension import List
|
||||
|
||||
from bot_data.model.game_server import GameServer
|
||||
|
||||
|
||||
class GameServerRepositoryABC(ABC):
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_game_servers(self) -> List[GameServer]:
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_game_server_by_id(self, id: int) -> GameServer:
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_game_servers_by_server_id(self, id: int) -> List[GameServer]:
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def get_game_server_by_api_key_id(self, id: int) -> GameServer:
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def add_game_server(self, game_server: GameServer):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def update_game_server(self, game_server: GameServer):
|
||||
pass
|
||||
|
||||
@abstractmethod
|
||||
def delete_game_server(self, game_server: GameServer):
|
||||
pass
|
@@ -11,6 +11,10 @@ class UserJoinedGameServerRepositoryABC(ABC):
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
# @abstractmethod
|
||||
# def get_game_server_by_api_key(self) -> List[UserJoinedGameServer]:
|
||||
# pass
|
||||
|
||||
@abstractmethod
|
||||
def get_user_joined_game_servers(self) -> List[UserJoinedGameServer]:
|
||||
pass
|
||||
|
@@ -9,6 +9,7 @@ from bot_data.abc.api_key_repository_abc import ApiKeyRepositoryABC
|
||||
from bot_data.abc.auth_user_repository_abc import AuthUserRepositoryABC
|
||||
from bot_data.abc.auto_role_repository_abc import AutoRoleRepositoryABC
|
||||
from bot_data.abc.client_repository_abc import ClientRepositoryABC
|
||||
from bot_data.abc.game_server_repository_abc import GameServerRepositoryABC
|
||||
from bot_data.abc.known_user_repository_abc import KnownUserRepositoryABC
|
||||
from bot_data.abc.level_repository_abc import LevelRepositoryABC
|
||||
from bot_data.abc.server_repository_abc import ServerRepositoryABC
|
||||
@@ -26,6 +27,7 @@ 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
|
||||
from bot_data.service.client_repository_service import ClientRepositoryService
|
||||
from bot_data.service.game_server_repository_service import GameServerRepositoryService
|
||||
from bot_data.service.known_user_repository_service import KnownUserRepositoryService
|
||||
from bot_data.service.level_repository_service import LevelRepositoryService
|
||||
from bot_data.service.seeder_service import SeederService
|
||||
@@ -68,5 +70,6 @@ class DataModule(ModuleABC):
|
||||
UserMessageCountPerHourRepositoryABC,
|
||||
UserMessageCountPerHourRepositoryService,
|
||||
)
|
||||
services.add_transient(GameServerRepositoryABC, GameServerRepositoryService)
|
||||
|
||||
services.add_transient(SeederService)
|
||||
|
@@ -57,7 +57,7 @@ class GameServer(TableABC):
|
||||
def get_select_all_string() -> str:
|
||||
return str(
|
||||
f"""
|
||||
SELECT * FROM `GameServer`;
|
||||
SELECT * FROM `GameServers`;
|
||||
"""
|
||||
)
|
||||
|
||||
@@ -65,16 +65,34 @@ class GameServer(TableABC):
|
||||
def get_select_by_id_string(id: int) -> str:
|
||||
return str(
|
||||
f"""
|
||||
SELECT * FROM `GameServer`
|
||||
SELECT * FROM `GameServers`
|
||||
WHERE `Id` = {id};
|
||||
"""
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def get_select_by_api_key_id_string(id: int) -> str:
|
||||
return str(
|
||||
f"""
|
||||
SELECT * FROM `GameServers`
|
||||
WHERE `ApiKeyId` = {id};
|
||||
"""
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def get_select_by_server_id_string(id: int) -> str:
|
||||
return str(
|
||||
f"""
|
||||
SELECT * FROM `GameServers`
|
||||
WHERE `ServerId` = {id};
|
||||
"""
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def get_select_by_user_id_string(id: int) -> str:
|
||||
return str(
|
||||
f"""
|
||||
SELECT * FROM `GameServer`
|
||||
SELECT * FROM `GameServers`
|
||||
WHERE `UserId` = {id};
|
||||
"""
|
||||
)
|
||||
@@ -83,8 +101,8 @@ class GameServer(TableABC):
|
||||
def insert_string(self) -> str:
|
||||
return str(
|
||||
f"""
|
||||
INSERT INTO `GameServer` (
|
||||
`Name`, `ServerId`, `ApiKeyId`, CreatedAt`, `LastModifiedAt`
|
||||
INSERT INTO `GameServers` (
|
||||
`Name`, `ServerId`, `ApiKeyId`, `CreatedAt`, `LastModifiedAt`
|
||||
) VALUES (
|
||||
'{self._name}',
|
||||
{self._server.id},
|
||||
@@ -99,7 +117,7 @@ class GameServer(TableABC):
|
||||
def udpate_string(self) -> str:
|
||||
return str(
|
||||
f"""
|
||||
UPDATE `GameServer`
|
||||
UPDATE `GameServers`
|
||||
SET `LastModifiedAt` = '{self._modified_at}'
|
||||
WHERE `Id` = {self._id};
|
||||
"""
|
||||
@@ -109,7 +127,7 @@ class GameServer(TableABC):
|
||||
def delete_string(self) -> str:
|
||||
return str(
|
||||
f"""
|
||||
DELETE FROM `GameServer`
|
||||
DELETE FROM `GameServers`
|
||||
WHERE `Id` = {self._id};
|
||||
"""
|
||||
)
|
||||
@@ -118,7 +136,7 @@ class GameServer(TableABC):
|
||||
def delete_by_user_id_string(id: int) -> str:
|
||||
return str(
|
||||
f"""
|
||||
DELETE FROM `GameServer`
|
||||
DELETE FROM `GameServers`
|
||||
WHERE `UserId` = {id}
|
||||
"""
|
||||
)
|
||||
|
@@ -0,0 +1,89 @@
|
||||
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.api_key_repository_abc import ApiKeyRepositoryABC
|
||||
from bot_data.abc.game_server_repository_abc import GameServerRepositoryABC
|
||||
from bot_data.abc.server_repository_abc import ServerRepositoryABC
|
||||
from bot_data.model.game_server import GameServer
|
||||
|
||||
|
||||
class GameServerRepositoryService(GameServerRepositoryABC):
|
||||
def __init__(
|
||||
self,
|
||||
logger: DatabaseLogger,
|
||||
db_context: DatabaseContextABC,
|
||||
servers: ServerRepositoryABC,
|
||||
api_keys: ApiKeyRepositoryABC,
|
||||
):
|
||||
self._logger = logger
|
||||
|
||||
self._context = db_context
|
||||
self._servers = servers
|
||||
self._api_keys = api_keys
|
||||
|
||||
GameServerRepositoryABC.__init__(self)
|
||||
|
||||
def _from_result(self, result: tuple):
|
||||
return GameServer(
|
||||
result[1],
|
||||
self._servers.get_server_by_id(result[2]),
|
||||
self._api_keys.get_api_key_by_id(result[3]),
|
||||
result[4],
|
||||
result[5],
|
||||
id=result[0],
|
||||
)
|
||||
|
||||
def get_game_servers(self) -> List[GameServer]:
|
||||
game_servers = List(GameServer)
|
||||
self._logger.trace(
|
||||
__name__,
|
||||
f"Send SQL command: {GameServer.get_select_all_string()}",
|
||||
)
|
||||
results = self._context.select(GameServer.get_select_all_string())
|
||||
for result in results:
|
||||
self._logger.trace(__name__, f"Get user-joined-game-server with id {result[0]}")
|
||||
game_servers.append(self._from_result(result))
|
||||
|
||||
return game_servers
|
||||
|
||||
def get_game_servers_by_server_id(self, id: int) -> List[GameServer]:
|
||||
game_servers = List(GameServer)
|
||||
self._logger.trace(
|
||||
__name__,
|
||||
f"Send SQL command: {GameServer.get_select_by_server_id_string(id)}",
|
||||
)
|
||||
results = self._context.select(GameServer.get_select_by_server_id_string(id))
|
||||
for result in results:
|
||||
self._logger.trace(__name__, f"Get user-joined-game-server with id {result[0]}")
|
||||
game_servers.append(self._from_result(result))
|
||||
|
||||
return game_servers
|
||||
|
||||
def get_game_server_by_id(self, id: int) -> GameServer:
|
||||
self._logger.trace(
|
||||
__name__,
|
||||
f"Send SQL command: {GameServer.get_select_by_id_string(id)}",
|
||||
)
|
||||
result = self._context.select(GameServer.get_select_by_id_string(id))[0]
|
||||
return self._from_result(result)
|
||||
|
||||
def get_game_server_by_api_key_id(self, id: int) -> GameServer:
|
||||
self._logger.trace(
|
||||
__name__,
|
||||
f"Send SQL command: {GameServer.get_select_by_api_key_id_string(id)}",
|
||||
)
|
||||
result = self._context.select(GameServer.get_select_by_api_key_id_string(id))[0]
|
||||
return self._from_result(result)
|
||||
|
||||
def add_game_server(self, game_server: GameServer):
|
||||
self._logger.trace(__name__, f"Send SQL command: {game_server.insert_string}")
|
||||
self._context.cursor.execute(game_server.insert_string)
|
||||
|
||||
def update_game_server(self, game_server: GameServer):
|
||||
self._logger.trace(__name__, f"Send SQL command: {game_server.udpate_string}")
|
||||
self._context.cursor.execute(game_server.udpate_string)
|
||||
|
||||
def delete_game_server(self, game_server: GameServer):
|
||||
self._logger.trace(__name__, f"Send SQL command: {game_server.delete_string}")
|
||||
self._context.cursor.execute(game_server.delete_string)
|
@@ -4,13 +4,11 @@ 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.api_key_repository_abc import ApiKeyRepositoryABC
|
||||
from bot_data.abc.server_repository_abc import ServerRepositoryABC
|
||||
from bot_data.abc.game_server_repository_abc import GameServerRepositoryABC
|
||||
from bot_data.abc.user_joined_game_server_repository_abc import (
|
||||
UserJoinedGameServerRepositoryABC,
|
||||
)
|
||||
from bot_data.abc.user_repository_abc import UserRepositoryABC
|
||||
from bot_data.model.game_server import GameServer
|
||||
from bot_data.model.user_joined_game_server import UserJoinedGameServer
|
||||
|
||||
|
||||
@@ -20,38 +18,20 @@ class UserJoinedGameServerRepositoryService(UserJoinedGameServerRepositoryABC):
|
||||
logger: DatabaseLogger,
|
||||
db_context: DatabaseContextABC,
|
||||
users: UserRepositoryABC,
|
||||
servers: ServerRepositoryABC,
|
||||
api_keys: ApiKeyRepositoryABC,
|
||||
game_servers: GameServerRepositoryABC,
|
||||
):
|
||||
self._logger = logger
|
||||
self._context = db_context
|
||||
|
||||
self._users = users
|
||||
self._servers = servers
|
||||
self._api_keys = api_keys
|
||||
self._game_servers = game_servers
|
||||
|
||||
UserJoinedGameServerRepositoryABC.__init__(self)
|
||||
|
||||
def _game_server_from_id(self, id: int):
|
||||
self._logger.trace(
|
||||
__name__,
|
||||
f"Send SQL command: {GameServer.get_select_by_id_string(id)}",
|
||||
)
|
||||
result = self._context.select(GameServer.get_select_by_id_string(id))[0]
|
||||
|
||||
return GameServer(
|
||||
result[1],
|
||||
self._servers.get_server_by_id(result[2]),
|
||||
self._api_keys.get_api_key_by_id(result[3]),
|
||||
result[4],
|
||||
result[5],
|
||||
id=result[0],
|
||||
)
|
||||
|
||||
def _from_result(self, result: tuple) -> UserJoinedGameServer:
|
||||
return UserJoinedGameServer(
|
||||
self._users.get_user_by_id(result[1]),
|
||||
self._game_server_from_id(result[2]),
|
||||
self._game_servers.get_game_server_by_id(result[2]),
|
||||
result[3],
|
||||
result[4],
|
||||
result[5],
|
||||
|
Reference in New Issue
Block a user