from typing import Optional

from sqlmodel import Field, SQLModel

from app.models.base import _utcnow


class TopupPlan(SQLModel, table=True):
    __tablename__ = "topup_plans"

    topup_plan_id: str = Field(primary_key=True)
    name: str
    price: str
    images: int = Field(default=0)
    videos: int = Field(default=0)
    product_id: str
    is_active: int = Field(default=1)
    created_at: str = Field(default_factory=_utcnow)


class TopupPurchase(SQLModel, table=True):
    __tablename__ = "topup_purchases"

    id: Optional[int] = Field(default=None, primary_key=True)
    user_id: str = Field(index=True, foreign_key="users.user_id")
    topup_plan_id: str = Field(foreign_key="topup_plans.topup_plan_id")
    order_id: Optional[str] = None
    purchase_token: Optional[str] = Field(default=None, unique=True)
    images_remaining: int = Field(default=0)
    videos_remaining: int = Field(default=0)
    status: str = Field(default="active")
    purchased_at: str = Field(default_factory=_utcnow)
