use left-join when fetching alias
This commit is contained in:
parent
14e82ca7a3
commit
f3c61f9a61
|
@ -148,13 +148,14 @@ def get_alias_info(user_id, query=None, highlight_gen_email_id=None) -> [AliasIn
|
||||||
query = query.strip().lower()
|
query = query.strip().lower()
|
||||||
|
|
||||||
aliases = {} # dict of alias and AliasInfo
|
aliases = {} # dict of alias and AliasInfo
|
||||||
|
|
||||||
q = (
|
q = (
|
||||||
db.session.query(GenEmail, ForwardEmail, ForwardEmailLog)
|
db.session.query(GenEmail, ForwardEmail, ForwardEmailLog)
|
||||||
.filter(
|
.join(ForwardEmail, GenEmail.id == ForwardEmail.gen_email_id, isouter=True)
|
||||||
GenEmail.user_id == user_id,
|
.join(
|
||||||
GenEmail.id == ForwardEmail.gen_email_id,
|
ForwardEmailLog, ForwardEmail.id == ForwardEmailLog.forward_id, isouter=True
|
||||||
ForwardEmail.id == ForwardEmailLog.forward_id,
|
|
||||||
)
|
)
|
||||||
|
.filter(GenEmail.user_id == user_id)
|
||||||
.order_by(GenEmail.created_at.desc())
|
.order_by(GenEmail.created_at.desc())
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -172,6 +173,9 @@ def get_alias_info(user_id, query=None, highlight_gen_email_id=None) -> [AliasIn
|
||||||
)
|
)
|
||||||
|
|
||||||
alias_info = aliases[ge.email]
|
alias_info = aliases[ge.email]
|
||||||
|
if not fel:
|
||||||
|
continue
|
||||||
|
|
||||||
if fel.is_reply:
|
if fel.is_reply:
|
||||||
alias_info.nb_reply += 1
|
alias_info.nb_reply += 1
|
||||||
elif fel.blocked:
|
elif fel.blocked:
|
||||||
|
@ -179,25 +183,6 @@ def get_alias_info(user_id, query=None, highlight_gen_email_id=None) -> [AliasIn
|
||||||
else:
|
else:
|
||||||
alias_info.nb_forward += 1
|
alias_info.nb_forward += 1
|
||||||
|
|
||||||
# also add alias that has no forward email or log
|
|
||||||
q = (
|
|
||||||
db.session.query(GenEmail)
|
|
||||||
.filter(GenEmail.email.notin_(aliases.keys()))
|
|
||||||
.filter(GenEmail.user_id == user_id)
|
|
||||||
).order_by(GenEmail.created_at.desc())
|
|
||||||
|
|
||||||
if query:
|
|
||||||
q = q.filter(GenEmail.email.contains(query))
|
|
||||||
|
|
||||||
for ge in q:
|
|
||||||
aliases[ge.email] = AliasInfo(
|
|
||||||
gen_email=ge,
|
|
||||||
nb_blocked=0,
|
|
||||||
nb_forward=0,
|
|
||||||
nb_reply=0,
|
|
||||||
highlight=ge.id == highlight_gen_email_id,
|
|
||||||
)
|
|
||||||
|
|
||||||
ret = list(aliases.values())
|
ret = list(aliases.values())
|
||||||
|
|
||||||
# make sure the highlighted alias is the first element
|
# make sure the highlighted alias is the first element
|
||||||
|
|
Loading…
Reference in a new issue