After Graduate Update
This commit is contained in:
parent
b92a91ab37
commit
c6917dd85e
69 changed files with 7540 additions and 0 deletions
64
ressult/app/routes/sales.py
Normal file
64
ressult/app/routes/sales.py
Normal 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))
|
||||
Loading…
Add table
Add a link
Reference in a new issue