Added technician config mutation #127

This commit is contained in:
Sven Heidemann 2023-08-07 14:31:54 +02:00
parent a8a48709c6
commit 3ff767a545
9 changed files with 63 additions and 36 deletions

@ -1 +1 @@
Subproject commit 4264ba15970a28f8a50c888bbf635a15c438bcf9 Subproject commit 359f9c38c3ec825a89f3bf289a65ec035cfcb693

@ -1 +1 @@
Subproject commit c712f856ebe30c71ac0b144045599ed2f91a1cba Subproject commit 6d3f253f4121191308b4b0d5f01fa1c61b61406a

View File

@ -74,6 +74,6 @@ class TechnicianIdConfig(TableABC):
return str( return str(
f""" f"""
DELETE FROM `CFG_TechnicianIds` DELETE FROM `CFG_TechnicianIds`
WHERE `Id` = {self._id}; WHERE `TechnicianId` = {self._technician_id};
""" """
) )

View File

@ -74,6 +74,6 @@ class TechnicianPingUrlConfig(TableABC):
return str( return str(
f""" f"""
DELETE FROM `CFG_TechnicianPingUrls` DELETE FROM `CFG_TechnicianPingUrls`
WHERE `Id` = {self._id}; WHERE `URL` = {self._ping_url};
""" """
) )

View File

@ -24,6 +24,7 @@ from bot_graphql.mutations.achievement_mutation import AchievementMutation
from bot_graphql.mutations.auto_role_mutation import AutoRoleMutation from bot_graphql.mutations.auto_role_mutation import AutoRoleMutation
from bot_graphql.mutations.auto_role_rule_mutation import AutoRoleRuleMutation from bot_graphql.mutations.auto_role_rule_mutation import AutoRoleRuleMutation
from bot_graphql.mutations.level_mutation import LevelMutation from bot_graphql.mutations.level_mutation import LevelMutation
from bot_graphql.mutations.technician_config_mutation import TechnicianConfigMutation
from bot_graphql.mutations.user_joined_game_server_mutation import UserJoinedGameServerMutation from bot_graphql.mutations.user_joined_game_server_mutation import UserJoinedGameServerMutation
from bot_graphql.mutations.user_mutation import UserMutation from bot_graphql.mutations.user_mutation import UserMutation
from bot_graphql.queries.achievement_attribute_query import AchievementAttributeQuery from bot_graphql.queries.achievement_attribute_query import AchievementAttributeQuery
@ -120,5 +121,6 @@ class GraphQLModule(ModuleABC):
services.add_transient(QueryABC, UserMutation) services.add_transient(QueryABC, UserMutation)
services.add_transient(QueryABC, AchievementMutation) services.add_transient(QueryABC, AchievementMutation)
services.add_transient(QueryABC, UserJoinedGameServerMutation) services.add_transient(QueryABC, UserJoinedGameServerMutation)
services.add_transient(QueryABC, TechnicianConfigMutation)
services.add_transient(SeederService) services.add_transient(SeederService)

View File

@ -5,4 +5,5 @@ type Mutation {
user: UserMutation user: UserMutation
userJoinedGameServer: UserJoinedGameServerMutation userJoinedGameServer: UserJoinedGameServerMutation
achievement: AchievementMutation achievement: AchievementMutation
technicianConfig: TechnicianConfigMutation
} }

View File

@ -46,9 +46,7 @@ type TechnicianIdConfigHistory implements HistoryTableQuery {
} }
type TechnicianConfigMutation { type TechnicianConfigMutation {
createTechnicianConfig(input: TechnicianConfigInput!): TechnicianConfig
updateTechnicianConfig(input: TechnicianConfigInput!): TechnicianConfig updateTechnicianConfig(input: TechnicianConfigInput!): TechnicianConfig
deleteTechnicianConfig(id: ID): TechnicianConfig
} }
input TechnicianConfigInput { input TechnicianConfigInput {

View File

@ -4,6 +4,7 @@ from bot_graphql.mutations.achievement_mutation import AchievementMutation
from bot_graphql.mutations.auto_role_mutation import AutoRoleMutation from bot_graphql.mutations.auto_role_mutation import AutoRoleMutation
from bot_graphql.mutations.auto_role_rule_mutation import AutoRoleRuleMutation from bot_graphql.mutations.auto_role_rule_mutation import AutoRoleRuleMutation
from bot_graphql.mutations.level_mutation import LevelMutation from bot_graphql.mutations.level_mutation import LevelMutation
from bot_graphql.mutations.technician_config_mutation import TechnicianConfigMutation
from bot_graphql.mutations.user_joined_game_server_mutation import UserJoinedGameServerMutation from bot_graphql.mutations.user_joined_game_server_mutation import UserJoinedGameServerMutation
from bot_graphql.mutations.user_mutation import UserMutation from bot_graphql.mutations.user_mutation import UserMutation
@ -17,6 +18,7 @@ class Mutation(MutationType):
user_mutation: UserMutation, user_mutation: UserMutation,
achievement_mutation: AchievementMutation, achievement_mutation: AchievementMutation,
user_joined_game_server: UserJoinedGameServerMutation, user_joined_game_server: UserJoinedGameServerMutation,
technician_config: TechnicianConfigMutation,
): ):
MutationType.__init__(self) MutationType.__init__(self)
@ -26,3 +28,4 @@ class Mutation(MutationType):
self.set_field("user", lambda *_: user_mutation) self.set_field("user", lambda *_: user_mutation)
self.set_field("achievement", lambda *_: achievement_mutation) self.set_field("achievement", lambda *_: achievement_mutation)
self.set_field("userJoinedGameServer", lambda *_: user_joined_game_server) self.set_field("userJoinedGameServer", lambda *_: user_joined_game_server)
self.set_field("technicianConfig", lambda *_: technician_config)

View File

@ -4,6 +4,8 @@ from cpl_discord.service import DiscordBotServiceABC
from bot_data.abc.server_repository_abc import ServerRepositoryABC from bot_data.abc.server_repository_abc import ServerRepositoryABC
from bot_data.abc.technician_config_repository_abc import TechnicianConfigRepositoryABC from bot_data.abc.technician_config_repository_abc import TechnicianConfigRepositoryABC
from bot_data.model.technician_config import TechnicianConfig from bot_data.model.technician_config import TechnicianConfig
from bot_data.model.technician_id_config import TechnicianIdConfig
from bot_data.model.technician_ping_url_config import TechnicianPingUrlConfig
from bot_data.model.user_role_enum import UserRoleEnum from bot_data.model.user_role_enum import UserRoleEnum
from bot_graphql.abc.query_abc import QueryABC from bot_graphql.abc.query_abc import QueryABC
@ -23,44 +25,65 @@ class TechnicianConfigMutation(QueryABC):
self._technician_configs = technician_configs self._technician_configs = technician_configs
self._db = db self._db = db
self.set_field("createTechnicianConfig", self.resolve_create_TechnicianConfig) self.set_field("updateTechnicianConfig", self.resolve_update_technician_config)
self.set_field("updateTechnicianConfig", self.resolve_update_TechnicianConfig)
self.set_field("deleteTechnicianConfig", self.resolve_delete_TechnicianConfig)
def resolve_create_technician_config(self, *_, input: dict):
if self._technician_configs.does_technician_config_exists():
return None
technician_config = TechnicianConfig(
input["helpCommandReferenceUrl"],
input["waitForRestart"],
input["waitForShutdown"],
input["cacheMaxMessages"],
input["pingURLs"],
input["technicianIds"],
)
self._technician_configs.add_technician_config(technician_config)
self._db.save_changes()
return self._technician_configs.get_technician_config()
def resolve_update_technician_config(self, *_, input: dict): def resolve_update_technician_config(self, *_, input: dict):
technician_config = self._technician_configs.get_technician_config() technician_config = self._technician_configs.get_technician_config()
self._can_user_mutate_data(technician_config, UserRoleEnum.admin) self._can_user_mutate_data(technician_config, UserRoleEnum.admin)
technician_config.name = input["name"] if "name" in input else technician_config.name technician_config.help_command_reference_url = (
input["helpCommandReferenceUrl"]
if "helpCommandReferenceUrl" in input
else technician_config.help_command_reference_url
)
technician_config.wait_for_restart = (
input["waitForRestart"] if "waitForRestart" in input else technician_config.wait_for_restart
)
technician_config.wait_for_shutdown = (
input["waitForShutdown"] if "waitForShutdown" in input else technician_config.wait_for_shutdown
)
technician_config.cache_max_messages = (
input["cacheMaxMessages"] if "cacheMaxMessages" in input else technician_config.cache_max_messages
)
technician_config.ping_urls = input["pingURLs"] if "pingURLs" in input else technician_config.ping_urls
technician_config.technician_ids = (
input["technicianIds"] if "technicianIds" in input else technician_config.technician_ids
)
self._technician_configs.update_technician_config(technician_config)
if "pingURLs" in input:
self._update_ping_urls(technician_config)
if "technicianIds" in input:
self._update_technician_ids(technician_config)
self._technician_configs.update_TechnicianConfig(technician_config)
self._db.save_changes() self._db.save_changes()
technician_config = self._technician_configs.get_TechnicianConfig_by_id(input["id"])
return technician_config return technician_config
def resolve_delete_technician_config(self, *_, id: int): def _update_ping_urls(self, new_config: TechnicianConfig):
technician_config = self._technician_configs.get_TechnicianConfig_by_id(id) old_config = self._technician_configs.get_technician_config()
self._can_user_mutate_data(technician_config.server, UserRoleEnum.admin) for url in old_config.ping_urls:
if url in new_config.ping_urls:
continue
self._technician_configs.delete_TechnicianConfig(technician_config) self._technician_configs.delete_technician_ping_url_config(TechnicianPingUrlConfig(url))
self._db.save_changes()
return technician_config for url in new_config.ping_urls:
if url in old_config.ping_urls:
continue
self._technician_configs.add_technician_ping_url_config(TechnicianPingUrlConfig(url))
def _update_technician_ids(self, new_config: TechnicianConfig):
old_config = self._technician_configs.get_technician_config()
for url in old_config.technician_ids:
if url in new_config.technician_ids:
continue
self._technician_configs.delete_technician_id_config(TechnicianIdConfig(url))
for url in new_config.technician_ids:
if url in old_config.technician_ids:
continue
self._technician_configs.add_technician_id_config(TechnicianIdConfig(url))