diff --git a/app/models.py b/app/models.py index c32d059..ff0f1f3 100644 --- a/app/models.py +++ b/app/models.py @@ -1,10 +1,11 @@ -from sqlalchemy import Column, Integer, String, Float, Date +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) # IDs are strings now + 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)) @@ -22,13 +23,35 @@ class Customer(Base): 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) # IDs are strings now + account_id = Column(String(20), primary_key=True, index=True) account_number = Column(String(20), unique=True, index=True) - customer_id = Column(String(20)) # matches Customer.customer_id + 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) \ No newline at end of file + 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")