from sqlalchemy import Column, Integer, String, Float, Date, ForeignKey from sqlalchemy.orm import relationship from app.database import Base class Customer(Base): __tablename__ = "customers" customer_id = Column(String(20), primary_key=True, index=True) full_name = Column(String(100), index=True) email = Column(String(100), unique=True) phone = Column(String(50)) date_of_birth = Column(Date) age = Column(Integer) gender = Column(String(20)) street_address = Column(String(100)) city = Column(String(50)) state = Column(String(10)) zip_code = Column(String(20)) home_branch_id = Column(Integer) customer_since = Column(Date) employment_status = Column(String(50)) annual_income = Column(Float) credit_score = Column(Integer) preferred_contact_method = Column(String(20)) accounts = relationship("Account", back_populates="customer") class Account(Base): __tablename__ = "accounts" account_id = Column(String(20), primary_key=True, index=True) account_number = Column(String(20), unique=True, index=True) customer_id = Column(String(20), ForeignKey("customers.customer_id")) account_type = Column(String(20)) open_date = Column(Date) balance = Column(Float) branch_id = Column(Integer) customer = relationship("Customer", back_populates="accounts") transactions = relationship("Transaction", back_populates="account") class Transaction(Base): __tablename__ = "transactions" transaction_id = Column(String(30), primary_key=True, index=True) account_id = Column(String(20), ForeignKey("accounts.account_id")) branch_id = Column(Integer) transaction_type = Column(String(50)) amount = Column(Float) date = Column(Date) balance_after = Column(Float) vendor = Column(String(100)) transaction_location = Column(String(100)) account = relationship("Account", back_populates="transactions")