- Backend: Review model, full API (public/user/admin endpoints) - Frontend: list, detail, write/edit pages, admin management - 1 CC reward for writing a review on completed vehicle requests - Navigation updates (Header + admin sidebar) - "Write Review" button on my-request page for completed requests Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
30 lines
1.2 KiB
Python
30 lines
1.2 KiB
Python
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")
|