- Implement comprehensive tests for SoundRepository covering CRUD operations and search functionalities. - Create tests for UserOauthRepository to validate OAuth record management. - Develop tests for CreditService to ensure proper credit management, including validation, deduction, and addition of credits. - Add tests for credit-related decorators to verify correct behavior in credit management scenarios.
29 lines
989 B
Python
29 lines
989 B
Python
"""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)
|
|
amount: int = Field(nullable=False) # Negative for deductions, positive for additions
|
|
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") |