Prefetch agents related database models

This commit is contained in:
Debanjum Singh Solanky
2024-10-08 21:59:15 -07:00
parent 8de67c5d4d
commit d628f89ce9

View File

@@ -556,14 +556,18 @@ class AgentAdapters:
@staticmethod @staticmethod
async def aget_readonly_agent_by_slug(agent_slug: str, user: KhojUser): async def aget_readonly_agent_by_slug(agent_slug: str, user: KhojUser):
return await Agent.objects.filter( return (
(Q(slug__iexact=agent_slug.lower())) await Agent.objects.filter(
& ( (Q(slug__iexact=agent_slug.lower()))
Q(privacy_level=Agent.PrivacyLevel.PUBLIC) & (
| Q(privacy_level=Agent.PrivacyLevel.PROTECTED) Q(privacy_level=Agent.PrivacyLevel.PUBLIC)
| Q(creator=user) | Q(privacy_level=Agent.PrivacyLevel.PROTECTED)
| Q(creator=user)
)
) )
).afirst() .prefetch_related("creator", "chat_model", "fileobject_set")
.afirst()
)
@staticmethod @staticmethod
async def adelete_agent_by_slug(agent_slug: str, user: KhojUser): async def adelete_agent_by_slug(agent_slug: str, user: KhojUser):
@@ -579,15 +583,23 @@ class AgentAdapters:
@staticmethod @staticmethod
async def aget_agent_by_slug(agent_slug: str, user: KhojUser): async def aget_agent_by_slug(agent_slug: str, user: KhojUser):
return await Agent.objects.filter( return (
(Q(slug__iexact=agent_slug.lower())) & (Q(privacy_level=Agent.PrivacyLevel.PUBLIC) | Q(creator=user)) await Agent.objects.filter(
).afirst() (Q(slug__iexact=agent_slug.lower())) & (Q(privacy_level=Agent.PrivacyLevel.PUBLIC) | Q(creator=user))
)
.prefetch_related("creator", "chat_model", "fileobject_set")
.afirst()
)
@staticmethod @staticmethod
async def aget_agent_by_name(agent_name: str, user: KhojUser): async def aget_agent_by_name(agent_name: str, user: KhojUser):
return await Agent.objects.filter( return (
(Q(name__iexact=agent_name.lower())) & (Q(privacy_level=Agent.PrivacyLevel.PUBLIC) | Q(creator=user)) await Agent.objects.filter(
).afirst() (Q(name__iexact=agent_name.lower())) & (Q(privacy_level=Agent.PrivacyLevel.PUBLIC) | Q(creator=user))
)
.prefetch_related("creator", "chat_model", "fileobject_set")
.afirst()
)
@staticmethod @staticmethod
def get_agent_by_slug(slug: str, user: KhojUser = None): def get_agent_by_slug(slug: str, user: KhojUser = None):