from pydantic import BaseModel from typing import Optional from datetime import datetime from app.models.transaction import TransactionStatus, PaymentGateway class TransactionBase(BaseModel): amount: float currency: str = "USD" payment_gateway: PaymentGateway description: Optional[str] = None class TransactionCreate(TransactionBase): user_id: int subscription_id: Optional[int] = None class TransactionUpdate(BaseModel): status: Optional[TransactionStatus] = None gateway_transaction_id: Optional[str] = None gateway_reference: Optional[str] = None class TransactionInDB(TransactionBase): id: int user_id: int subscription_id: Optional[int] = None status: TransactionStatus gateway_transaction_id: Optional[str] = None gateway_reference: Optional[str] = None created_at: datetime updated_at: datetime class Config: from_attributes = True class Transaction(TransactionInDB): pass class PaymentRequest(BaseModel): membership_plan_id: int payment_gateway: PaymentGateway