from datetime import datetime, timezone from sqlalchemy.orm import relationship from app.extensions import db class Customer(db.Model): __tablename__ = 'customers' id = db.Column(db.String(50), primary_key=True) msisdn = db.Column(db.String(20), unique=True, nullable=False) country_code = db.Column(db.String(3), nullable=False) created_at = db.Column(db.DateTime, default=datetime.now(timezone.utc)) updated_at = db.Column(db.DateTime, default=datetime.now(timezone.utc), onupdate=datetime.now(timezone.utc)) accounts = relationship( "Account", primaryjoin="Customer.id == Account.customer_id", foreign_keys="Account.customer_id", back_populates="customer", ) loans = relationship( "Loan", primaryjoin="Customer.id == Loan.customer_id", foreign_keys="Loan.customer_id", back_populates="customer", ) @classmethod def get_customer(cls, customer_id): """ Get customer by ID. """ customer = cls.query.filter_by(id=customer_id).first() if not customer: raise ValueError(f"Customer does not exist") return customer def __repr__(self): return f''