Add helper functions for Pen
This commit is contained in:
parent
9d0b223ed5
commit
eadc83edad
67
helpers/pen_helpers.py
Normal file
67
helpers/pen_helpers.py
Normal 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
|
Loading…
x
Reference in New Issue
Block a user