from typing import Optional

from sqlmodel import Field, SQLModel

from app.models.base import _utcnow


class Subscription(SQLModel, table=True):
    __tablename__ = "subscriptions"

    id: Optional[int] = Field(default=None, primary_key=True)
    user_id: str = Field(index=True)
    order_id: Optional[str] = None
    product_id: str
    purchase_token: str = Field(unique=True)
    status: str = Field(default="active")
    payment_state: Optional[int] = None
    expiry_date: Optional[str] = None
    created_at: str = Field(default_factory=_utcnow)
    updated_at: str = Field(default_factory=_utcnow)
