Reduce number of queries performed during the lookup

This commit is contained in:
George Drummond 2019-05-22 11:36:43 -04:00
parent a9fac1ca59
commit 9098bc7c0b
No known key found for this signature in database
GPG Key ID: 296DD6077123BF17

View File

@ -23,31 +23,25 @@ class PortfoliosQuery(Query):
.subquery()
)
application_portfolios = (
db.session.query(Portfolio)
.join(Application)
.filter(Portfolio.id == Application.portfolio_id)
.filter(Application.id == granted_applications.c.id)
.all()
)
portfolios = (
db.session.query(Portfolio)
.join(PortfolioRole)
.filter(PortfolioRole.user == user)
.filter(PortfolioRole.status == PortfolioRoleStatus.ACTIVE)
.all()
)
portfolio_ids = []
[portfolio_ids.append(p.id) for p in portfolios]
[portfolio_ids.append(p.id) for p in application_portfolios]
return (
db.session.query(Portfolio)
.filter(Portfolio.id.in_(portfolio_ids))
.order_by(Portfolio.name.desc())
.filter(
Portfolio.id.in_(
db.session.query(Portfolio.id)
.join(Application)
.filter(Portfolio.id == Application.portfolio_id)
.filter(Application.id == granted_applications.c.id)
.subquery()
)
| Portfolio.id.in_(
db.session.query(Portfolio.id)
.join(PortfolioRole)
.filter(PortfolioRole.user == user)
.filter(PortfolioRole.status == PortfolioRoleStatus.ACTIVE)
.subquery()
)
)
.order_by(Portfolio.name.asc())
.all()
)