mirror of
https://github.com/simple-login/app.git
synced 2024-09-30 05:31:30 +02:00
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()
|
||||
|
||||
aliases = {} # dict of alias and AliasInfo
|
||||
|
||||
q = (
|
||||
db.session.query(GenEmail, ForwardEmail, ForwardEmailLog)
|
||||
.filter(
|
||||
GenEmail.user_id == user_id,
|
||||
GenEmail.id == ForwardEmail.gen_email_id,
|
||||
ForwardEmail.id == ForwardEmailLog.forward_id,
|
||||
.join(ForwardEmail, GenEmail.id == ForwardEmail.gen_email_id, isouter=True)
|
||||
.join(
|
||||
ForwardEmailLog, ForwardEmail.id == ForwardEmailLog.forward_id, isouter=True
|
||||
)
|
||||
.filter(GenEmail.user_id == user_id)
|
||||
.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]
|
||||
if not fel:
|
||||
continue
|
||||
|
||||
if fel.is_reply:
|
||||
alias_info.nb_reply += 1
|
||||
elif fel.blocked:
|
||||
@ -179,25 +183,6 @@ def get_alias_info(user_id, query=None, highlight_gen_email_id=None) -> [AliasIn
|
||||
else:
|
||||
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())
|
||||
|
||||
# make sure the highlighted alias is the first element
|
||||
|
Loading…
Reference in New Issue
Block a user