"""Credit transaction model for tracking credit usage.""" from typing import TYPE_CHECKING from sqlmodel import Field, Relationship from app.models.base import BaseModel if TYPE_CHECKING: from app.models.user import User class CreditTransaction(BaseModel, table=True): """Database model for credit transactions.""" __tablename__ = "credit_transaction" # pyright: ignore[reportAssignmentType] user_id: int = Field(foreign_key="user.id", nullable=False) action_type: str = Field(nullable=False) # Negative for deductions, positive for additions amount: int = Field(nullable=False) balance_before: int = Field(nullable=False) balance_after: int = Field(nullable=False) description: str = Field(nullable=False) success: bool = Field(nullable=False, default=True) # JSON string for additional data metadata_json: str | None = Field(default=None) # relationships user: "User" = Relationship(back_populates="credit_transactions")