from datetime import datetime
from app.extensions import db


class Game(db.Model):
    __tablename__ = "games"
    id = db.Column(db.Integer, primary_key=True)
    slug = db.Column(db.String(60), unique=True, nullable=False)
    name = db.Column(db.String(120), nullable=False)
    icon = db.Column(db.String(20), default="🎮")
    image = db.Column(db.String(255))
    description = db.Column(db.Text)
    sort_order = db.Column(db.Integer, default=0)
    is_active = db.Column(db.Boolean, default=True)
    created_at = db.Column(db.DateTime, default=datetime.utcnow)

    modes = db.relationship("GameMode", backref="game", lazy="dynamic",
                            cascade="all,delete-orphan", order_by="GameMode.id")


class GameMode(db.Model):
    __tablename__ = "game_modes"
    id = db.Column(db.Integer, primary_key=True)
    game_id = db.Column(db.Integer, db.ForeignKey("games.id"), nullable=False)
    slug = db.Column(db.String(60), nullable=False)
    name = db.Column(db.String(120), nullable=False)
    description = db.Column(db.Text)
    squad_size = db.Column(db.Integer, default=1)
    max_squad_size = db.Column(db.Integer)
    icon = db.Column(db.String(20), default="⚔️")
    is_active = db.Column(db.Boolean, default=True)
    created_at = db.Column(db.DateTime, default=datetime.utcnow)

    __table_args__ = (db.UniqueConstraint("game_id", "slug", name="uq_game_mode"),)
