From 8b8e2be82db11e7b71895714caeb2ebaa4c8e3ed Mon Sep 17 00:00:00 2001 From: Debanjum Date: Sat, 30 Nov 2024 19:08:34 -0800 Subject: [PATCH] Only create subscription object when it does not exist for user This avoid unnecessarily throwing an internal server error when the user tries to sign-up using multiple mechanisms (e.g first by email, then by google oauth) --- src/khoj/database/adapters/__init__.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/khoj/database/adapters/__init__.py b/src/khoj/database/adapters/__init__.py index 46a65c79..151abc83 100644 --- a/src/khoj/database/adapters/__init__.py +++ b/src/khoj/database/adapters/__init__.py @@ -224,7 +224,9 @@ async def acreate_user_by_phone_number(phone_number: str) -> KhojUser: ) await user.asave() - await Subscription.objects.acreate(user=user, type=Subscription.Type.STANDARD) + user_subscription = await Subscription.objects.filter(user=user).afirst() + if not user_subscription: + await Subscription.objects.acreate(user=user, type=Subscription.Type.STANDARD) return user @@ -296,7 +298,9 @@ async def create_user_by_google_token(token: dict) -> KhojUser: user=user, ) - await Subscription.objects.acreate(user=user, type=Subscription.Type.STANDARD) + user_subscription = await Subscription.objects.filter(user=user).afirst() + if not user_subscription: + await Subscription.objects.acreate(user=user, type=Subscription.Type.STANDARD) return user