from typing import Optional

from sqlmodel import Field, SQLModel

from app.models.base import _utcnow


class PricingTier(SQLModel, table=True):
    __tablename__ = "pricing_tiers"

    id: Optional[int] = Field(default=None, primary_key=True)
    tier_id: str = Field(unique=True)
    name: str
    price: str
    period: str = Field(default="month")
    trial_days: int = Field(default=7)
    product_id: str
    is_default: int = Field(default=0)
    created_at: str = Field(default_factory=_utcnow)


class UserPricing(SQLModel, table=True):
    __tablename__ = "user_pricing"

    user_id: str = Field(primary_key=True)
    tier_id: str = Field(foreign_key="pricing_tiers.tier_id")
    assigned_at: str = Field(default_factory=_utcnow)


class PlanLimit(SQLModel, table=True):
    __tablename__ = "plan_limits"

    tier_id: str = Field(primary_key=True)
    max_images: int = Field(default=0)
    max_videos: int = Field(default=0)
    max_ppts: int = Field(default=0)
    window_hours: Optional[int] = None
    created_at: str = Field(default_factory=_utcnow)
