From 4faf0d763646695769e6a4b9243440c8e9d84d30 Mon Sep 17 00:00:00 2001 From: Son Date: Sat, 26 Feb 2022 17:34:53 +0100 Subject: [PATCH] optimize dashboard page: load custom domain using joinedload() instead of explicit join --- app/api/serializer.py | 11 +++++------ templates/dashboard/index.html | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/app/api/serializer.py b/app/api/serializer.py index 2d9546b6..21b801de 100644 --- a/app/api/serializer.py +++ b/app/api/serializer.py @@ -204,7 +204,7 @@ def get_alias_infos_with_pagination_v3( q = list(q.limit(page_limit).offset(page_id * page_size)) ret = [] - for alias, contact, email_log, custom_domain, nb_reply, nb_blocked, nb_forward in q: + for alias, contact, email_log, nb_reply, nb_blocked, nb_forward in q: ret.append( AliasInfo( alias=alias, @@ -215,7 +215,7 @@ def get_alias_infos_with_pagination_v3( nb_reply=nb_reply, latest_email_log=email_log, latest_contact=contact, - custom_domain=custom_domain, + custom_domain=alias.custom_domain, ) ) @@ -318,7 +318,7 @@ def get_alias_info_v3(user: User, alias_id: int) -> AliasInfo: q = construct_alias_query(user) q = q.filter(Alias.id == alias_id) - for alias, contact, email_log, custom_domain, nb_reply, nb_blocked, nb_forward in q: + for alias, contact, email_log, nb_reply, nb_blocked, nb_forward in q: return AliasInfo( alias=alias, mailbox=alias.mailbox, @@ -328,7 +328,7 @@ def get_alias_info_v3(user: User, alias_id: int) -> AliasInfo: nb_reply=nb_reply, latest_email_log=email_log, latest_contact=contact, - custom_domain=custom_domain, + custom_domain=alias.custom_domain, ) @@ -379,14 +379,13 @@ def construct_alias_query(user: User): Alias, Contact, EmailLog, - CustomDomain, alias_activity_subquery.c.nb_reply, alias_activity_subquery.c.nb_blocked, alias_activity_subquery.c.nb_forward, ) .options(joinedload(Alias.hibp_breaches)) + .options(joinedload(Alias.custom_domain)) .join(Contact, Alias.id == Contact.alias_id, isouter=True) - .join(CustomDomain, Alias.custom_domain_id == CustomDomain.id, isouter=True) .join(EmailLog, Contact.id == EmailLog.contact_id, isouter=True) .filter(Alias.id == alias_activity_subquery.c.id) .filter(Alias.id == alias_contact_subquery.c.id) diff --git a/templates/dashboard/index.html b/templates/dashboard/index.html index 853206fb..225c3cf0 100644 --- a/templates/dashboard/index.html +++ b/templates/dashboard/index.html @@ -284,7 +284,7 @@ {% endif %} - {% if alias_info.custom_domain and not alias_info.custom_domain.verified %} + {% if alias.custom_domain and not alias.custom_domain.verified %} {% endif %}