From 5658228ce22f007dcc787974e8cece02623457d2 Mon Sep 17 00:00:00 2001
From: lilly
Date: Sat, 9 May 2026 21:30:53 +0200
Subject: [PATCH] api: implement caching for lock discovery
---
api/src/dooris_api/app.py | 18 ++++++++----------
1 file changed, 8 insertions(+), 10 deletions(-)
diff --git a/api/src/dooris_api/app.py b/api/src/dooris_api/app.py
index fd56e42..26d4551 100644
--- a/api/src/dooris_api/app.py
+++ b/api/src/dooris_api/app.py
@@ -117,16 +117,14 @@ async def login_callback(req: Request, resp: Response, oidc_client: deps.OpenidC
@app.get("/api/locks/", tags=["locks"], responses={status.HTTP_401_UNAUTHORIZED: {"model": models.HttpProblemDetail}})
-async def list_locks(ccujack: deps.CCUJackClient) -> List[models.Lock]:
- locks = await ccujack.find_locks()
-
- # TODO: Properly associate parameters with their values
- # values = await asyncio.gather(*[
- # ccujack.query_param_value(f"{i_lock.address}/{i_channel.index}/{i_param.id}/~pv")
- # for i_lock, lock_channels in locks
- # for i_channel, channel_params in lock_channels
- # for i_param in channel_params
- # ])
+async def list_locks(ccujack: deps.CCUJackClient, cache: deps.Cache) -> List[models.Lock]:
+ # discover locks from ccujack
+ CACHE_KEY = "ccu-find-locks"
+ if CACHE_KEY in cache:
+ locks = cache[CACHE_KEY]
+ else:
+ locks = await ccujack.find_locks()
+ cache[CACHE_KEY] = locks
# assemble result objects
result = []