From 3fae274aa0feb9b1d075062ec660e79651371ec7 Mon Sep 17 00:00:00 2001 From: Markus Graf Date: Mon, 22 Jun 2026 10:30:01 +0200 Subject: [PATCH] refactor: centralize alarm dict-to-GraphQL mapping --- api/schema.py | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/api/schema.py b/api/schema.py index 08c7925..65fc7b2 100644 --- a/api/schema.py +++ b/api/schema.py @@ -68,6 +68,15 @@ class Alarm: is_enabled: bool +def _alarm_from_dict(data: dict) -> Alarm: + """Map a CrontabManager alarm dict to the public GraphQL Alarm type.""" + return Alarm( + id=data["id"], + cron_expression=data["cron_expression"], + is_enabled=data["is_enabled"], + ) + + @strawberry.type class Query: @strawberry.field @@ -77,26 +86,14 @@ class Query: @strawberry.field def get_alarms(self) -> List[Alarm]: manager = get_manager() - return [ - Alarm( - id=a["id"], - cron_expression=a["cron_expression"], - is_enabled=a["is_enabled"], - ) - for a in manager.get_alarms() - ] + return [_alarm_from_dict(a) for a in manager.get_alarms()] @strawberry.field def get_alarm(self, id: str) -> Optional[Alarm]: manager = get_manager() - alarms = manager.get_alarms() - for a in alarms: + for a in manager.get_alarms(): if a["id"] == id: - return Alarm( - id=a["id"], - cron_expression=a["cron_expression"], - is_enabled=a["is_enabled"], - ) + return _alarm_from_dict(a) return None