swiftops-backend / src /app /models /user_financial_account.py
kamau1's picture
fix: sync models and tests with DB asset/account schemas
dd5b6b1
"""
User Financial Account Model
"""
from sqlalchemy import Column, String, Boolean, DECIMAL, Text
from sqlalchemy.dialects.postgresql import UUID
from datetime import datetime
from app.core.database import Base
import uuid
class UserFinancialAccount(Base):
"""
User Financial Account model - Payout details for users
"""
__tablename__ = "user_financial_accounts"
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
user_id = Column(UUID(as_uuid=True), nullable=False)
# Account Details
account_name = Column(Text, nullable=False)
payout_method = Column(String(50), nullable=False)
# Mobile money details
mobile_money_provider = Column(Text)
mobile_money_phone = Column(Text)
mobile_money_account_name = Column(Text)
# Bank details
bank_name = Column(Text)
bank_account_name = Column(Text)
bank_account_number = Column(Text)
bank_branch = Column(Text)
bank_swift_code = Column(Text)
# Payout preferences
payout_frequency = Column(Text)
# Status
is_primary = Column(Boolean, default=False)
is_active = Column(Boolean, default=True)
is_verified = Column(Boolean, default=False)
verified_at = Column(String(50), nullable=True)
verified_by_user_id = Column(UUID(as_uuid=True), nullable=True)
notes = Column(Text)
# Timestamps
created_at = Column(String(50), default=lambda: datetime.utcnow().isoformat())
updated_at = Column(String(50), default=lambda: datetime.utcnow().isoformat())
deleted_at = Column(String(50), nullable=True)
def __repr__(self):
return f"<UserFinancialAccount(user_id='{self.user_id}', method='{self.payout_method}')>"