Added logic to edit technician config in WI #127

This commit is contained in:
2023-08-14 11:58:36 +02:00
parent eac367c611
commit 8922524f44
7 changed files with 234 additions and 39 deletions

View File

@@ -174,7 +174,7 @@ class DataIntegrityService:
self._logger.warn(__name__, f"User not found in database: {u.id}")
self._logger.debug(__name__, f"Add user: {u.id}")
self._users.add_user(User(u.id, 0, server))
self._users.add_user(User(u.id, 0, 0, 0, server))
self._db_context.save_changes()
self._logger.debug(__name__, f"Added User: {u.id}")

View File

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

View File

@@ -1,6 +1,8 @@
from cpl_core.database.context import DatabaseContextABC
from cpl_discord.service import DiscordBotServiceABC
from cpl_query.extension import List
from bot_api.logging.api_logger import ApiLogger
from bot_data.abc.server_repository_abc import ServerRepositoryABC
from bot_data.abc.technician_config_repository_abc import TechnicianConfigRepositoryABC
from bot_data.model.technician_config import TechnicianConfig
@@ -13,6 +15,7 @@ from bot_graphql.abc.query_abc import QueryABC
class TechnicianConfigMutation(QueryABC):
def __init__(
self,
logger: ApiLogger,
bot: DiscordBotServiceABC,
servers: ServerRepositoryABC,
technician_configs: TechnicianConfigRepositoryABC,
@@ -20,6 +23,7 @@ class TechnicianConfigMutation(QueryABC):
):
QueryABC.__init__(self, "TechnicianConfigMutation")
self._logger = logger
self._bot = bot
self._servers = servers
self._technician_configs = technician_configs
@@ -45,9 +49,13 @@ class TechnicianConfigMutation(QueryABC):
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.ping_urls = (
List(str, 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
List(int).extend([int(x) for x in input["technicianIds"]])
if "technicianIds" in input
else technician_config.technician_ids
)
self._technician_configs.update_technician_config(technician_config)
@@ -76,14 +84,19 @@ class TechnicianConfigMutation(QueryABC):
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:
for technician_id in old_config.technician_ids:
if technician_id in new_config.technician_ids:
continue
self._technician_configs.delete_technician_id_config(TechnicianIdConfig(url))
self._technician_configs.delete_technician_id_config(TechnicianIdConfig(technician_id))
for url in new_config.technician_ids:
if url in old_config.technician_ids:
for technician_id in new_config.technician_ids:
user = self._bot.get_user(technician_id)
if user is None:
raise ValueError(f"Invalid technicianId")
for technician_id in new_config.technician_ids:
if technician_id in old_config.technician_ids:
continue
self._technician_configs.add_technician_id_config(TechnicianIdConfig(url))
self._technician_configs.add_technician_id_config(TechnicianIdConfig(technician_id))