feat: deal product services
This commit is contained in:
38
test/test.py
38
test/test.py
@@ -1,14 +1,46 @@
|
||||
import asyncio
|
||||
|
||||
from sqlalchemy import select, func, union
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
from sqlalchemy.orm import joinedload
|
||||
|
||||
from backend.session import session_maker
|
||||
from migrations.env import run_async_migrations
|
||||
from models import Product, ProductBarcode
|
||||
from models import Deal, DealProduct, Service
|
||||
|
||||
import models
|
||||
import models.secondary
|
||||
|
||||
|
||||
async def main(session: AsyncSession):
|
||||
await run_async_migrations()
|
||||
deal_services_subquery = (
|
||||
select(
|
||||
models.secondary.DealService.deal_id,
|
||||
func.sum(models.secondary.DealService.quantity * Service.price).label('total_price')
|
||||
)
|
||||
.join(Service)
|
||||
.group_by(models.secondary.DealService.deal_id)
|
||||
)
|
||||
product_services_subquery = select(
|
||||
select(
|
||||
models.secondary.DealProductService.deal_id,
|
||||
func.sum(models.DealProduct.quantity * models.secondary.DealProductService.price).label('total_price')
|
||||
)
|
||||
.join(models.secondary.DealProduct)
|
||||
.group_by(models.secondary.DealProductService.deal_id)
|
||||
.subquery()
|
||||
)
|
||||
union_subqueries = deal_services_subquery.union(product_services_subquery).subquery()
|
||||
final_subquery = (
|
||||
select(
|
||||
union_subqueries.c.deal_id,
|
||||
func.sum(union_subqueries.c.total_price).label('total_sum')
|
||||
)
|
||||
.group_by(union_subqueries.c.deal_id)
|
||||
.subquery()
|
||||
)
|
||||
|
||||
print(final_subquery)
|
||||
|
||||
|
||||
async def preload():
|
||||
async with session_maker() as session:
|
||||
|
||||
Reference in New Issue
Block a user