Fix performance issue for users with many orders
This commit is contained in:
@@ -4,6 +4,7 @@ from typing import Annotated
|
||||
from fastapi import APIRouter, File, Form, HTTPException, Request
|
||||
from sqlalchemy import func, select
|
||||
from sqlalchemy.exc import IntegrityError
|
||||
from sqlalchemy.orm import selectinload
|
||||
from starlette import status
|
||||
from starlette.responses import RedirectResponse
|
||||
|
||||
@@ -12,6 +13,7 @@ from allmende_payment_system.api.dependencies import SessionDep, UserDep
|
||||
from allmende_payment_system.models import (
|
||||
Account,
|
||||
Area,
|
||||
Order,
|
||||
Permission,
|
||||
Product,
|
||||
ProductDetails,
|
||||
@@ -310,7 +312,13 @@ async def get_accounts(
|
||||
|
||||
templates = get_jinja_renderer()
|
||||
|
||||
accounts = session.scalars(select(Account)).all()
|
||||
accounts = session.scalars(
|
||||
select(Account).options(
|
||||
selectinload(Account.transactions)
|
||||
.selectinload(Transaction.order)
|
||||
.selectinload(Order.items)
|
||||
)
|
||||
).all()
|
||||
users = session.scalars(select(User)).all()
|
||||
|
||||
return templates.TemplateResponse(
|
||||
|
||||
@@ -85,8 +85,8 @@ async def add_to_cart(request: Request, session: SessionDep, user: UserDep):
|
||||
order_item = OrderItem(
|
||||
product=product, quantity=quantity, total_amount=total_amount
|
||||
)
|
||||
session.add(order_item)
|
||||
cart = user.shopping_cart
|
||||
session.add(order_item)
|
||||
cart.items.append(order_item)
|
||||
|
||||
session.flush()
|
||||
|
||||
Reference in New Issue
Block a user