Added server config mutation #127

This commit is contained in:
2023-08-14 15:53:42 +02:00
parent 4c42949516
commit 5d36f1188a
16 changed files with 537 additions and 26 deletions

View File

@@ -15,7 +15,11 @@ class ServerConfigRepositoryABC(ABC):
pass
@abstractmethod
def get_server_config(self, server_id: int) -> ServerConfig:
def get_server_config_by_server(self, server_id: int) -> ServerConfig:
pass
@abstractmethod
def get_server_config_by_id(self, config_id: int) -> ServerConfig:
pass
@abstractmethod

View File

@@ -41,12 +41,21 @@ class ServerAFKChannelIdsConfig(TableABC):
"""
)
@staticmethod
def get_select_by_server_id_string(server_id: int) -> str:
return str(
f"""
SELECT * FROM `CFG_ServerAFKChannelIds`
WHERE `ServerId` = {server_id};
"""
)
@property
def insert_string(self) -> str:
return str(
f"""
INSERT INTO `CFG_ServerAFKChannelIds` (
`RoleId`,
`ChannelId`,
`ServerId`
) VALUES (
{self._channel_id},
@@ -60,7 +69,7 @@ class ServerAFKChannelIdsConfig(TableABC):
return str(
f"""
UPDATE `CFG_ServerAFKChannelIds`
SET `RoleId` = {self._channel_id},
SET `ChannelId` = {self._channel_id},
`ServerId` = {self._server_id}
WHERE `Id` = {self._id};
"""
@@ -71,6 +80,6 @@ class ServerAFKChannelIdsConfig(TableABC):
return str(
f"""
DELETE FROM `CFG_ServerAFKChannelIds`
WHERE `Id` = {self._id};
WHERE `ChannelId` = {self._channel_id};
"""
)

View File

@@ -53,66 +53,130 @@ class ServerConfig(TableABC, ConfigurationModelABC):
self._created_at = created_at if created_at is not None else self._created_at
self._modified_at = modified_at if modified_at is not None else self._modified_at
@property
def id(self) -> int:
return self._id
@property
def message_delete_timer(self) -> int:
return self._message_delete_timer
@message_delete_timer.setter
def message_delete_timer(self, value: int):
self._message_delete_timer = value
@property
def notification_chat_id(self) -> int:
return self._notification_chat_id
@notification_chat_id.setter
def notification_chat_id(self, value: int):
self._notification_chat_id = value
@property
def max_voice_state_hours(self) -> int:
return self._max_voice_state_hours
@max_voice_state_hours.setter
def max_voice_state_hours(self, value: int):
self._max_voice_state_hours = value
@property
def xp_per_message(self) -> int:
return self._xp_per_message
@xp_per_message.setter
def xp_per_message(self, value: int):
self._xp_per_message = value
@property
def xp_per_reaction(self) -> int:
return self._xp_per_reaction
@xp_per_reaction.setter
def xp_per_reaction(self, value: int):
self._xp_per_reaction = value
@property
def max_message_xp_per_hour(self) -> int:
return self._max_message_xp_per_hour
@max_message_xp_per_hour.setter
def max_message_xp_per_hour(self, value: int):
self._max_message_xp_per_hour = value
@property
def xp_per_ontime_hour(self) -> int:
return self._xp_per_ontime_hour
@xp_per_ontime_hour.setter
def xp_per_ontime_hour(self, value: int):
self._xp_per_ontime_hour = value
@property
def xp_per_event_participation(self) -> int:
return self._xp_per_event_participation
@xp_per_event_participation.setter
def xp_per_event_participation(self, value: int):
self._xp_per_event_participation = value
@property
def xp_per_achievement(self) -> int:
return self._xp_per_achievement
@xp_per_achievement.setter
def xp_per_achievement(self, value: int):
self._xp_per_achievement = value
@property
def afk_command_channel_id(self) -> int:
return self._afk_command_channel_id
@afk_command_channel_id.setter
def afk_command_channel_id(self, value: int):
self._afk_command_channel_id = value
@property
def help_voice_channel_id(self) -> int:
return self._help_voice_channel_id
@help_voice_channel_id.setter
def help_voice_channel_id(self, value: int):
self._help_voice_channel_id = value
@property
def team_channel_id(self) -> int:
return self._team_channel_id
@team_channel_id.setter
def team_channel_id(self, value: int):
self._team_channel_id = value
@property
def login_message_channel_id(self) -> int:
return self._login_message_channel_id
@login_message_channel_id.setter
def login_message_channel_id(self, value: int):
self._login_message_channel_id = value
@property
def afk_channel_ids(self) -> List[int]:
return self._afk_channel_ids
@afk_channel_ids.setter
def afk_channel_ids(self, value: List[int]):
self._afk_channel_ids = value
@property
def team_role_ids(self) -> List[ServerTeamRoleIdsConfig]:
return self._team_role_ids
@team_role_ids.setter
def team_role_ids(self, value: List[ServerTeamRoleIdsConfig]):
self._team_role_ids = value
@property
def server(self) -> Server:
return self._server
@@ -134,6 +198,15 @@ class ServerConfig(TableABC, ConfigurationModelABC):
"""
)
@staticmethod
def get_select_by_server_id_string(server_id: int) -> str:
return str(
f"""
SELECT * FROM `CFG_Server`
WHERE `ServerId` = {server_id};
"""
)
@property
def insert_string(self) -> str:
return str(

View File

@@ -0,0 +1,102 @@
from bot_data.abc.history_table_abc import HistoryTableABC
class ServerConfigHistory(HistoryTableABC):
def __init__(
self,
message_delete_timer: int,
notification_chat_id: int,
max_voice_state_hours: int,
xp_per_message: int,
xp_per_reaction: int,
max_message_xp_per_hour: int,
xp_per_ontime_hour: int,
xp_per_event_participation: int,
xp_per_achievement: int,
afk_command_channel_id: int,
help_voice_channel_id: int,
team_channel_id: int,
login_message_channel_id: int,
server_id: int,
deleted: bool,
date_from: str,
date_to: str,
id=0,
):
HistoryTableABC.__init__(self)
self._id = id
self._message_delete_timer = message_delete_timer
self._notification_chat_id = notification_chat_id
self._max_voice_state_hours = max_voice_state_hours
self._xp_per_message = xp_per_message
self._xp_per_reaction = xp_per_reaction
self._max_message_xp_per_hour = max_message_xp_per_hour
self._xp_per_ontime_hour = xp_per_ontime_hour
self._xp_per_event_participation = xp_per_event_participation
self._xp_per_achievement = xp_per_achievement
self._afk_command_channel_id = afk_command_channel_id
self._help_voice_channel_id = help_voice_channel_id
self._team_channel_id = team_channel_id
self._login_message_channel_id = login_message_channel_id
self._server_id = server_id
self._deleted = deleted
self._date_from = date_from
self._date_to = date_to
@property
def message_delete_timer(self) -> int:
return self._message_delete_timer
@property
def notification_chat_id(self) -> int:
return self._notification_chat_id
@property
def max_voice_state_hours(self) -> int:
return self._max_voice_state_hours
@property
def xp_per_message(self) -> int:
return self._xp_per_message
@property
def xp_per_reaction(self) -> int:
return self._xp_per_reaction
@property
def max_message_xp_per_hour(self) -> int:
return self._max_message_xp_per_hour
@property
def xp_per_ontime_hour(self) -> int:
return self._xp_per_ontime_hour
@property
def xp_per_event_participation(self) -> int:
return self._xp_per_event_participation
@property
def xp_per_achievement(self) -> int:
return self._xp_per_achievement
@property
def afk_command_channel_id(self) -> int:
return self._afk_command_channel_id
@property
def help_voice_channel_id(self) -> int:
return self._help_voice_channel_id
@property
def team_channel_id(self) -> int:
return self._team_channel_id
@property
def login_message_channel_id(self) -> int:
return self._login_message_channel_id
@property
def server_id(self) -> int:
return self._server_id

View File

@@ -24,6 +24,10 @@ class ServerTeamRoleIdsConfig(TableABC):
self._created_at = created_at if created_at is not None else self._created_at
self._modified_at = modified_at if modified_at is not None else self._modified_at
@property
def id(self) -> int:
return self._id
@property
def role_id(self) -> int:
return self._role_id
@@ -49,6 +53,15 @@ class ServerTeamRoleIdsConfig(TableABC):
"""
)
@staticmethod
def get_select_by_server_id_string(server_id: int) -> str:
return str(
f"""
SELECT * FROM `CFG_ServerTeamRoleIds`
WHERE `ServerId` = {server_id};
"""
)
@property
def insert_string(self) -> str:
return str(
@@ -82,6 +95,6 @@ class ServerTeamRoleIdsConfig(TableABC):
return str(
f"""
DELETE FROM `CFG_ServerTeamRoleIds`
WHERE `Id` = {self._id};
WHERE `RoleId` = {self._role_id};
"""
)

View File

@@ -18,12 +18,12 @@ class ServerConfigRepositoryService(ServerConfigRepositoryABC):
self._context = db_context
self._servers = servers
def _get_team_role_ids(self, server_team_role_id: int) -> List[ServerTeamRoleIdsConfig]:
def _get_team_role_ids(self, server_id: int) -> List[ServerTeamRoleIdsConfig]:
ids = List(ServerTeamRoleIdsConfig)
self._logger.trace(
__name__, f"Send SQL command: {ServerTeamRoleIdsConfig.get_select_by_id_string(server_team_role_id)}"
__name__, f"Send SQL command: {ServerTeamRoleIdsConfig.get_select_by_server_id_string(server_id)}"
)
results = self._context.select(ServerTeamRoleIdsConfig.get_select_by_id_string(server_team_role_id))
results = self._context.select(ServerTeamRoleIdsConfig.get_select_by_server_id_string(server_id))
for result in results:
self._logger.trace(__name__, f"Got ServerTeamRoleIdsConfig with id {result[0]}")
ids.append(
@@ -34,12 +34,13 @@ class ServerConfigRepositoryService(ServerConfigRepositoryABC):
return ids
def _get_afk_channel_ids(self, server_team_role_id: int) -> List[int]:
urls = List(str)
def _get_afk_channel_ids(self, server_id: int) -> List[int]:
urls = List(int)
self._logger.trace(
__name__, f"Send SQL command: {ServerAFKChannelIdsConfig.get_select_by_id_string(server_team_role_id)}"
__name__,
f"Send SQL command: {ServerAFKChannelIdsConfig.get_select_by_server_id_string(server_id)}",
)
results = self._context.select(ServerAFKChannelIdsConfig.get_select_by_id_string(server_team_role_id))
results = self._context.select(ServerAFKChannelIdsConfig.get_select_by_server_id_string(server_id))
for result in results:
self._logger.trace(__name__, f"Got ServerAFKChannelIdsConfig with id {result[0]}")
urls.append(result[1])
@@ -62,8 +63,8 @@ class ServerConfigRepositoryService(ServerConfigRepositoryABC):
result[12],
result[13],
self._servers.get_server_by_id(result[14]),
self._get_afk_channel_ids(result[0]),
self._get_team_role_ids(result[0]),
self._get_afk_channel_ids(result[14]),
self._get_team_role_ids(result[14]),
result[15],
result[16],
id=result[0],
@@ -75,12 +76,18 @@ class ServerConfigRepositoryService(ServerConfigRepositoryABC):
return len(result) > 0
def get_server_config(self, server_id: int) -> ServerConfig:
def get_server_config_by_server(self, server_id: int) -> ServerConfig:
self._logger.trace(__name__, f"Send SQL command: {ServerConfig.get_select_by_id_string(server_id)}")
result = self._context.select(ServerConfig.get_select_by_id_string(server_id))[0]
return self._from_result(result)
def get_server_config_by_id(self, config_id: int) -> ServerConfig:
self._logger.trace(__name__, f"Send SQL command: {ServerConfig.get_select_by_id_string(config_id)}")
result = self._context.select(ServerConfig.get_select_by_id_string(config_id))[0]
return self._from_result(result)
def add_server_config(self, server_config: ServerConfig):
self._logger.trace(__name__, f"Send SQL command: {server_config.insert_string}")
self._context.cursor.execute(server_config.insert_string)