from sqlalchemy import Column, Integer, String, Text, Boolean, DateTime, ForeignKey, CheckConstraint from sqlalchemy.orm import relationship from sqlalchemy.sql import func from ..database import Base class Review(Base): """User reviews for completed vehicle requests""" __tablename__ = "reviews" __table_args__ = ( CheckConstraint('rating >= 1 AND rating <= 5', name='check_rating_range'), ) id = Column(Integer, primary_key=True, index=True) request_id = Column(Integer, ForeignKey("vehicle_requests.id"), nullable=False, unique=True) author_id = Column(Integer, ForeignKey("users.id"), nullable=False, index=True) rating = Column(Integer, nullable=False) title = Column(String(255), nullable=False) content = Column(Text, nullable=False) cc_rewarded = Column(Boolean, default=False) is_published = Column(Boolean, default=True, index=True) view_count = Column(Integer, default=0) created_at = Column(DateTime(timezone=True), server_default=func.now(), index=True) updated_at = Column(DateTime(timezone=True), onupdate=func.now()) # Relationships request = relationship("VehicleRequest", backref="review") author = relationship("User", backref="reviews")