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 = []