Fix performance issue for users with many orders

This commit is contained in:
2026-05-24 12:50:52 +02:00
parent 7856123bc0
commit 3591e0f33a
6 changed files with 136 additions and 22 deletions

View File

@@ -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(

View File

@@ -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()