aboutsummaryrefslogtreecommitdiffstats
path: root/backend/discord.py
diff options
context:
space:
mode:
Diffstat (limited to 'backend/discord.py')
-rw-r--r--backend/discord.py24
1 files changed, 6 insertions, 18 deletions
diff --git a/backend/discord.py b/backend/discord.py
index dc5989a..855a606 100644
--- a/backend/discord.py
+++ b/backend/discord.py
@@ -124,7 +124,6 @@ async def _fetch_member_api(member_id: str) -> models.DiscordMember | None:
async def get_member(
- database: Database,
user_id: str,
*,
force_refresh: bool = False,
@@ -135,34 +134,23 @@ async def get_member(
If `force_refresh` is True, the cache is skipped and the entry is updated.
None may be returned if the member object does not exist.
"""
- collection = database.get_collection("discord_members")
+ member_key = f"forms-backend:member_cache:{user_id}"
if force_refresh:
- await collection.delete_one({"user": user_id})
-
- # `create_index` creates the index if it does not exist, or passes
- # This handles TTL on member objects
- await collection.create_index(
- "inserted_at",
- expireAfterSeconds=60 * 60, # 1 hour
- name="inserted_at",
- )
+ await constants.REDIS_CLIENT.delete(member_key)
- result = await collection.find_one({"user": user_id})
+ result = await constants.REDIS_CLIENT.get(member_key)
if result is not None:
- return models.DiscordMember(**json.loads(result["data"]))
+ return models.DiscordMember(**json.loads(result))
member = await _fetch_member_api(user_id)
if not member:
return None
- await collection.insert_one({
- "user": user_id,
- "data": member.json(),
- "inserted_at": datetime.datetime.now(tz=datetime.UTC),
- })
+ await constants.REDIS_CLIENT.set(member_key, member.json(), ex=60 * 60)
+
return member