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