refactor: centralize alarm dict-to-GraphQL mapping
This commit is contained in:
+12
-15
@@ -68,6 +68,15 @@ class Alarm:
|
|||||||
is_enabled: bool
|
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
|
@strawberry.type
|
||||||
class Query:
|
class Query:
|
||||||
@strawberry.field
|
@strawberry.field
|
||||||
@@ -77,26 +86,14 @@ class Query:
|
|||||||
@strawberry.field
|
@strawberry.field
|
||||||
def get_alarms(self) -> List[Alarm]:
|
def get_alarms(self) -> List[Alarm]:
|
||||||
manager = get_manager()
|
manager = get_manager()
|
||||||
return [
|
return [_alarm_from_dict(a) for a in manager.get_alarms()]
|
||||||
Alarm(
|
|
||||||
id=a["id"],
|
|
||||||
cron_expression=a["cron_expression"],
|
|
||||||
is_enabled=a["is_enabled"],
|
|
||||||
)
|
|
||||||
for a in manager.get_alarms()
|
|
||||||
]
|
|
||||||
|
|
||||||
@strawberry.field
|
@strawberry.field
|
||||||
def get_alarm(self, id: str) -> Optional[Alarm]:
|
def get_alarm(self, id: str) -> Optional[Alarm]:
|
||||||
manager = get_manager()
|
manager = get_manager()
|
||||||
alarms = manager.get_alarms()
|
for a in manager.get_alarms():
|
||||||
for a in alarms:
|
|
||||||
if a["id"] == id:
|
if a["id"] == id:
|
||||||
return Alarm(
|
return _alarm_from_dict(a)
|
||||||
id=a["id"],
|
|
||||||
cron_expression=a["cron_expression"],
|
|
||||||
is_enabled=a["is_enabled"],
|
|
||||||
)
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user