speed up should_disable()

This commit is contained in:
Son Nguyen Kim 2021-07-14 12:25:44 +02:00
parent e26287a4c7
commit 189eb8427e
1 changed files with 3 additions and 6 deletions

View File

@ -978,13 +978,12 @@ def should_disable(alias: Alias) -> bool:
yesterday = arrow.now().shift(days=-1) yesterday = arrow.now().shift(days=-1)
nb_bounced_last_24h = ( nb_bounced_last_24h = (
db.session.query(EmailLog) db.session.query(EmailLog)
.join(Contact, EmailLog.contact_id == Contact.id)
.filter( .filter(
EmailLog.bounced.is_(True), EmailLog.bounced.is_(True),
EmailLog.is_reply.is_(False), EmailLog.is_reply.is_(False),
EmailLog.created_at > yesterday, EmailLog.created_at > yesterday,
) )
.filter(Contact.alias_id == alias.id) .filter(EmailLog.alias_id == alias.id)
.count() .count()
) )
# if more than 12 bounces in 24h -> disable alias # if more than 12 bounces in 24h -> disable alias
@ -997,14 +996,13 @@ def should_disable(alias: Alias) -> bool:
one_week_ago = arrow.now().shift(days=-8) one_week_ago = arrow.now().shift(days=-8)
nb_bounced_7d_1d = ( nb_bounced_7d_1d = (
db.session.query(EmailLog) db.session.query(EmailLog)
.join(Contact, EmailLog.contact_id == Contact.id)
.filter( .filter(
EmailLog.bounced.is_(True), EmailLog.bounced.is_(True),
EmailLog.is_reply.is_(False), EmailLog.is_reply.is_(False),
EmailLog.created_at > one_week_ago, EmailLog.created_at > one_week_ago,
EmailLog.created_at < yesterday, EmailLog.created_at < yesterday,
) )
.filter(Contact.alias_id == alias.id) .filter(EmailLog.alias_id == alias.id)
.count() .count()
) )
if nb_bounced_7d_1d > 1: if nb_bounced_7d_1d > 1:
@ -1022,8 +1020,7 @@ def should_disable(alias: Alias) -> bool:
func.date(EmailLog.created_at).label("date"), func.date(EmailLog.created_at).label("date"),
func.count(EmailLog.id).label("count"), func.count(EmailLog.id).label("count"),
) )
.join(Contact, EmailLog.contact_id == Contact.id) .filter(EmailLog.alias_id == alias.id)
.filter(Contact.alias_id == alias.id)
.filter( .filter(
EmailLog.created_at > arrow.now().shift(days=-10), EmailLog.created_at > arrow.now().shift(days=-10),
EmailLog.bounced.is_(True), EmailLog.bounced.is_(True),