Add helper functions for Pen

This commit is contained in:
Backend IM Bot 2025-03-26 23:06:23 +01:00
parent 9d0b223ed5
commit eadc83edad

67
helpers/pen_helpers.py Normal file
View File

@ -0,0 +1,67 @@
from typing import Optional
from pydantic import BaseModel, validator
class Pen(BaseModel):
name: str
color: str
brand: str
price: int
stock: int
@validator('name')
def name_must_not_be_empty(cls, value):
if not value.strip():
raise ValueError('Name cannot be empty')
return value
@validator('color')
def color_must_not_be_empty(cls, value):
if not value.strip():
raise ValueError('Color cannot be empty')
return value
@validator('brand')
def brand_must_not_be_empty(cls, value):
if not value.strip():
raise ValueError('Brand cannot be empty')
return value
@validator('price')
def price_must_be_positive(cls, value):
if value <= 0:
raise ValueError('Price must be a positive integer')
return value
@validator('stock')
def stock_must_be_non_negative(cls, value):
if value < 0:
raise ValueError('Stock cannot be negative')
return value
def create_pen(db, pen_data: Pen):
pen = Pen(**pen_data.dict())
db.add(pen)
db.commit()
db.refresh(pen)
return pen
def get_pen(db, pen_id: int) -> Optional[Pen]:
return db.query(Pen).filter(Pen.id == pen_id).first()
def update_pen(db, pen_id: int, pen_data: Pen):
pen = get_pen(db, pen_id)
if not pen:
return None
for field, value in pen_data.dict(exclude_unset=True).items():
setattr(pen, field, value)
db.commit()
db.refresh(pen)
return pen
def delete_pen(db, pen_id: int):
pen = get_pen(db, pen_id)
if not pen:
return None
db.delete(pen)
db.commit()
return pen