Spaces:
Sleeping
Sleeping
| """ | |
| 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}')>" | |