Skip to content

Commit 233b5d9

Browse files
Merge pull request #31 from tahzeer/1.0
Implement role-based cache key builder
2 parents 2740068 + bf64d0b commit 233b5d9

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

iam-staff-portal-api/src/iam_staff_portal_api/cache.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,17 @@
44

55
def init_cache():
66
FastAPICache.init(InMemoryBackend(), prefix="iam-staff-cache")
7+
8+
9+
def role_cache_key(func, namespace: str, *args, **kwargs):
10+
"""
11+
Build a cache key scoped only by role mnemonic.
12+
"""
13+
call_args = kwargs.get("args") or args
14+
call_kwargs = kwargs.get("kwargs") or {}
15+
16+
role_mnemonic = call_kwargs.get("role_mnemonic")
17+
if role_mnemonic is None and len(call_args) > 1:
18+
role_mnemonic = call_args[1]
19+
20+
return f"{namespace}:{role_mnemonic}"

iam-staff-portal-api/src/iam_staff_portal_api/controllers/user_access_controller.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from sqlalchemy import select
1010
from sqlalchemy.ext.asyncio import async_sessionmaker
1111

12+
from ..cache import role_cache_key
1213
from ..config import Settings
1314
from ..models import (
1415
StaffApplicationPermission,
@@ -184,7 +185,7 @@ async def get_permissions_for_roles(
184185

185186
return PermissionsResponse(permissions=sorted(set(permissions)))
186187

187-
@cache(expire=_config.cache_expire_seconds)
188+
@cache(expire=_config.cache_expire_seconds, key_builder=role_cache_key)
188189
async def get_permission_mnemonics_for_role(
189190
self,
190191
role_mnemonic: str,

0 commit comments

Comments
 (0)