After Graduate Update

This commit is contained in:
Daniel 2025-11-26 19:31:33 +03:00
parent b92a91ab37
commit c6917dd85e
69 changed files with 7540 additions and 0 deletions

View file

@ -0,0 +1,64 @@
# app/routes/sales.py
"""
Маршруты API для управления продажами
Соответствует требованиям ТЗ по истории реализации продукции
"""
from fastapi import APIRouter, HTTPException
from app.database import db
from app.models import Sale, SaleCreate
router = APIRouter()
@router.get("/partner/{partner_id}")
async def get_sales_by_partner(partner_id: int):
"""
Получение истории реализации продукции партнером
Соответствует модулю 4 ТЗ
"""
try:
result = db.execute_query("""
SELECT sale_id, partner_id, product_name, quantity, sale_date
FROM sales
WHERE partner_id = %s
ORDER BY sale_date DESC
""", (partner_id,))
return [dict(row) for row in result]
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@router.get("/")
async def get_all_sales():
"""Получение всех продаж с информацией о партнерах"""
try:
result = db.execute_query("""
SELECT s.sale_id, s.partner_id, p.company_name, s.product_name,
s.quantity, s.sale_date
FROM sales s
JOIN partners p ON s.partner_id = p.partner_id
ORDER BY s.sale_date DESC
""")
return [dict(row) for row in result]
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@router.post("/")
async def create_sale(sale: SaleCreate):
"""Создание новой записи о продаже"""
try:
result = db.execute_query("""
INSERT INTO sales (partner_id, product_name, quantity, sale_date)
VALUES (%s, %s, %s, %s)
RETURNING sale_id
""", (sale.partner_id, sale.product_name, sale.quantity, sale.sale_date))
return {"sale_id": result[0]["sale_id"]}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@router.delete("/{sale_id}")
async def delete_sale(sale_id: int):
"""Удаление записи о продаже"""
try:
db.execute_query("DELETE FROM sales WHERE sale_id = %s", (sale_id,))
return {"message": "Sale deleted successfully"}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))