Files
amap/backend/src/products/products.py
Julien Aldon 8352097ffb
Some checks failed
Deploy Amap / deploy (push) Failing after 16s
fix pylint errors
2026-03-03 11:08:08 +01:00

84 lines
2.5 KiB
Python

import src.messages as messages
import src.products.exceptions as exceptions
import src.products.service as service
from fastapi import APIRouter, Depends, HTTPException, Query
from sqlmodel import Session
from src import models
from src.auth.auth import get_current_user
from src.database import get_session
router = APIRouter(prefix='/products')
@router.get('', response_model=list[models.ProductPublic], )
def get_products(
user: models.User = Depends(get_current_user),
session: Session = Depends(get_session),
names: list[str] = Query([]),
types: list[str] = Query([]),
productors: list[str] = Query([]),
):
return service.get_all(
session,
user,
names,
productors,
types,
)
@router.get('/{id}', response_model=models.ProductPublic)
def get_product(
id: int,
user: models.User = Depends(get_current_user),
session: Session = Depends(get_session)
):
result = service.get_one(session, id)
if result is None:
raise HTTPException(status_code=404,
detail=messages.Messages.not_found('product'))
return result
@router.post('', response_model=models.ProductPublic)
def create_product(
product: models.ProductCreate,
user: models.User = Depends(get_current_user),
session: Session = Depends(get_session)
):
try:
result = service.create_one(session, product)
except exceptions.ProductCreateError as error:
raise HTTPException(status_code=400, detail=str(error))
except exceptions.ProductorNotFoundError as error:
raise HTTPException(status_code=404, detail=str(error))
return result
@router.put('/{id}', response_model=models.ProductPublic)
def update_product(
id: int, product: models.ProductUpdate,
user: models.User = Depends(get_current_user),
session: Session = Depends(get_session)
):
try:
result = service.update_one(session, id, product)
except exceptions.ProductNotFoundError as error:
raise HTTPException(status_code=404, detail=str(error))
except exceptions.ProductorNotFoundError as error:
raise HTTPException(status_code=404, detail=str(error))
return result
@router.delete('/{id}', response_model=models.ProductPublic)
def delete_product(
id: int,
user: models.User = Depends(get_current_user),
session: Session = Depends(get_session)
):
try:
result = service.delete_one(session, id)
except exceptions.ProductNotFoundError as error:
raise HTTPException(status_code=404, detail=str(error))
return result