1er
This commit is contained in:
45
backend/app/db/crud.py
Normal file
45
backend/app/db/crud.py
Normal file
@@ -0,0 +1,45 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from sqlalchemy.exc import IntegrityError
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from backend.app.db import models, schemas
|
||||
|
||||
|
||||
"""
|
||||
CRUD minimal pour manipuler les produits dans la base SQLite.
|
||||
"""
|
||||
|
||||
|
||||
def get_product(db: Session, product_id: int) -> models.Product | None:
|
||||
return db.query(models.Product).filter(models.Product.id == product_id).first()
|
||||
|
||||
|
||||
def list_products(db: Session, skip: int = 0, limit: int = 100) -> list[models.Product]:
|
||||
return db.query(models.Product).offset(skip).limit(limit).all()
|
||||
|
||||
|
||||
def create_product(db: Session, data: schemas.ProductCreate) -> models.Product:
|
||||
product = models.Product(**data.dict())
|
||||
db.add(product)
|
||||
try:
|
||||
db.commit()
|
||||
except IntegrityError:
|
||||
db.rollback()
|
||||
raise
|
||||
db.refresh(product)
|
||||
return product
|
||||
|
||||
|
||||
def update_product(db: Session, product: models.Product, changes: schemas.ProductUpdate) -> models.Product:
|
||||
for field, value in changes.dict(exclude_unset=True).items():
|
||||
setattr(product, field, value)
|
||||
db.add(product)
|
||||
db.commit()
|
||||
db.refresh(product)
|
||||
return product
|
||||
|
||||
|
||||
def remove_product(db: Session, product: models.Product) -> None:
|
||||
db.delete(product)
|
||||
db.commit()
|
||||
Reference in New Issue
Block a user