[feat]: add models bind to eco database

This commit is contained in:
VivianDee
2025-07-25 15:13:59 +01:00
parent 8c215a7f35
commit 5c99bf96c2
6 changed files with 122 additions and 0 deletions
+17
View File
@@ -0,0 +1,17 @@
from sqlalchemy import Column, String, Date, Boolean, Integer
from app.extensions import db
class Account(db.Model):
__tablename__ = 'accounts'
__bind_key__ = 'eco'
id = Column(Integer, primary_key=True)
affiliate_code = Column(String(3), nullable=False)
customer_id = Column(String(9), nullable=False)
account_id = Column(String(10), unique=True, nullable=False)
registration_date = Column(Date, nullable=False)
account_currency_code = Column(String(3), nullable=False)
plastic_card_attached = Column(Boolean, default=False)
def __repr__(self):
return f"<Account(id={self.id}, account_id={self.account_id}, customer_id={self.customer_id})>"
+18
View File
@@ -0,0 +1,18 @@
from sqlalchemy import Column, String, Date, Integer
from sqlalchemy.orm import relationship
from app.extensions import db
class Customer(db.Model):
__tablename__ = 'customers'
__bind_key__ = 'eco'
id = Column(Integer, primary_key=True)
affiliate_code = Column(String(3), nullable=False)
customer_id = Column(String(9), unique=True, nullable=False)
msisdn = Column(String(15), nullable=True)
created_at = Column(Date, nullable=False)
def __repr__(self):
return f"<Customer(id={self.id}, customer_id={self.customer_id}, msisdn={self.msisdn})>"
+21
View File
@@ -0,0 +1,21 @@
from app.eco.enums.installment_status import InstallmentStatus
from sqlalchemy import Column, String, Date, Numeric, ForeignKey, Enum, Integer, DateTime
from app.extensions import db
import enum
class Installment(db.Model):
__tablename__ = 'installments'
__bind_key__ = 'eco'
id = Column(Integer, primary_key=True)
loan_id = Column(Integer, nullable=False)
installment_number = Column(Integer, nullable=False)
due_date = Column(Date, nullable=False)
amount = Column(Numeric(12, 2), nullable=False)
paid_amount = Column(Numeric(12, 2), default=0.00)
status = Column(Enum(InstallmentStatus), default=InstallmentStatus.PENDING)
penalty_amount = Column(Numeric(12, 2), default=0.00)
def __repr__(self):
return f"<Installment(id={self.id}, loan_id={self.loan_id}, status={self.status})>"
+26
View File
@@ -0,0 +1,26 @@
from app.eco.enums.loan_status import LoanStatus
from sqlalchemy import Column, String, Date, Numeric, Enum
from app.extensions import db
import enum
class Loan(db.Model):
__tablename__ = 'loans'
__bind_key__ = 'eco'
id = Column(Integer, primary_key=True)
request_id = Column(String(50), unique=True, nullable=False)
affiliate_code = Column(String(3), nullable=False)
customer_id = Column(String(9), nullable=False)
account_id = Column(String(10), nullable=False)
product_id = Column(String(4), nullable=False)
debt_id = Column(String(20), unique=True, nullable=False)
initial_credit_amount = Column(Numeric(12, 2), nullable=False)
current_balance = Column(Numeric(12, 2), nullable=False)
interest_rate = Column(Numeric(5, 2), nullable=False)
status = Column(Enum(LoanStatus), default=LoanStatus.PENDING)
disbursement_date = Column(Date, nullable=False)
due_date = Column(Date, nullable=False)
lien_amount = Column(Numeric(12, 2), default=0.00)
def __repr__(self):
return f"<Loan(id={self.id}, debt_id={self.debt_id}, status={self.status})>"
+22
View File
@@ -0,0 +1,22 @@
from sqlalchemy import Column, String, Numeric, Date, Integer
from app.extensions import db
class Offer(db.Model):
__tablename__ = 'offers'
__bind_key__ = 'eco'
id = Column(Integer, primary_key=True)
offer_id = Column(String(50), unique=True, nullable=False)
session_id = Column(String(50), nullable=False)
customer_id = Column(String(9), nullable=False)
product_id = Column(String(4), nullable=False)
amount = Column(Numeric(12, 2), nullable=False)
upfront_payment = Column(Numeric(12, 2), nullable=False)
interest_rate = Column(Numeric(5, 2), nullable=False)
installment_amount = Column(Numeric(12, 2), nullable=False)
total_repayment_amount = Column(Numeric(12, 2), nullable=False)
expiration_date = Column(Date, nullable=False)
status = Column(String(20), default='AVAILABLE')
def __repr__(self):
return f"<Offer(id={self.id}, offer_id={self.offer_id}, status={self.status})>"
+18
View File
@@ -0,0 +1,18 @@
from sqlalchemy import Column, String, DateTime, Integer
from app.extensions import db
class Session(db.Model):
__tablename__ = 'sessions'
__bind_key__ = 'eco'
id = Column(Integer, primary_key=True)
session_id = Column(String(50), unique=True, nullable=False)
customer_id = Column(String(9), nullable=True)
account_id = Column(String(10), nullable=True)
msisdn = Column(String(15), nullable=False)
channel = Column(String(10), nullable=False)
expires_at = Column(DateTime, nullable=False)
status = Column(String(20), default='ACTIVE')
def __repr__(self):
return f"<Session(id={self.id}, session_id={self.session_id}, status={self.status})>"