60 lines
1.6 KiB
Python

from typing import List, Optional
from sqlalchemy.orm import Session
from app.crud.base import CRUDBase
from app.models.review import Review
from app.schemas.review import ReviewCreate, ReviewUpdate
class CRUDReview(CRUDBase[Review, ReviewCreate, ReviewUpdate]):
def get_reviews_by_product(
self, db: Session, *, product_id: int, skip: int = 0, limit: int = 100
) -> List[Review]:
return (
db.query(Review)
.filter(Review.product_id == product_id)
.order_by(Review.created_at.desc())
.offset(skip)
.limit(limit)
.all()
)
def get_reviews_by_user(
self, db: Session, *, user_id: int, skip: int = 0, limit: int = 100
) -> List[Review]:
return (
db.query(Review)
.filter(Review.user_id == user_id)
.order_by(Review.created_at.desc())
.offset(skip)
.limit(limit)
.all()
)
def get_user_review_for_product(
self, db: Session, *, user_id: int, product_id: int
) -> Optional[Review]:
return (
db.query(Review)
.filter(Review.user_id == user_id, Review.product_id == product_id)
.first()
)
def create_user_review(
self, db: Session, *, obj_in: ReviewCreate, user_id: int
) -> Review:
db_obj = Review(
user_id=user_id,
product_id=obj_in.product_id,
rating=obj_in.rating,
comment=obj_in.comment,
)
db.add(db_obj)
db.commit()
db.refresh(db_obj)
return db_obj
review = CRUDReview(Review)