45 lines
1.1 KiB
Python

from datetime import datetime
from pydantic import BaseModel, Field, validator
class ReviewBase(BaseModel):
product_id: str
rating: int = Field(..., ge=1, le=5)
title: str | None = None
comment: str | None = None
class ReviewCreate(ReviewBase):
@validator('rating')
def rating_must_be_valid(cls, v):
if v < 1 or v > 5:
raise ValueError('Rating must be between 1 and 5')
return v
class ReviewUpdate(BaseModel):
rating: int | None = Field(None, ge=1, le=5)
title: str | None = None
comment: str | None = None
is_approved: bool | None = None
@validator('rating')
def rating_must_be_valid(cls, v):
if v is not None and (v < 1 or v > 5):
raise ValueError('Rating must be between 1 and 5')
return v
class ReviewInDBBase(ReviewBase):
id: str
user_id: str
is_verified_purchase: bool
is_approved: bool
created_at: datetime
updated_at: datetime | None = None
class Config:
orm_mode = True
class Review(ReviewInDBBase):
user_name: str | None = None
product_name: str | None = None