from datetime import datetime
from app.extensions import db


class SpecialMatch(db.Model):
    """Special/featured matches with additional metadata."""
    __tablename__ = "special_matches"
    id = db.Column(db.Integer, primary_key=True)
    match_id = db.Column(db.Integer, db.ForeignKey("matches.id"), nullable=True)
    banner_image = db.Column(db.String(255))
    featured_reason = db.Column(db.String(200))
    extra_prize = db.Column(db.Integer, default=0)
    is_featured = db.Column(db.Boolean, default=True)
    created_at = db.Column(db.DateTime, default=datetime.utcnow)

    match = db.relationship("Match", foreign_keys=[match_id])


class SpecialMatchParticipant(db.Model):
    __tablename__ = "special_match_participants"
    id = db.Column(db.Integer, primary_key=True)
    special_match_id = db.Column(db.Integer, db.ForeignKey("special_matches.id"), nullable=False)
    user_id = db.Column(db.Integer, db.ForeignKey("users.id"), nullable=False)
    team_id = db.Column(db.Integer, db.ForeignKey("teams.id"), nullable=True)
    status = db.Column(db.String(20), default="registered")
    paid = db.Column(db.Boolean, default=False)
    registered_at = db.Column(db.DateTime, default=datetime.utcnow)

    user = db.relationship("User", foreign_keys=[user_id])
    team = db.relationship("Team", foreign_keys=[team_id])

    __table_args__ = (db.UniqueConstraint("special_match_id", "user_id", name="uq_special_match_participant"),)
