[add]: Loan repayment event

This commit is contained in:
VivianDee
2025-04-10 17:15:19 +01:00
parent 6f15ae97f4
commit f252e33be2
5 changed files with 39 additions and 19 deletions
+1 -3
View File
@@ -41,9 +41,7 @@ class ProvideLoanService(BaseService):
"message": "Failed to log transaction."
}), 400
# Save the loan details
loan_id = f"loan_{transaction_id}"
# Save the loan details
loan = Loan.create_loan(
customer_id=customer_id,
account_id=account_id,
+8 -2
View File
@@ -1,6 +1,7 @@
from datetime import datetime, timezone
from sqlalchemy.orm import relationship
from app.extensions import db
from sqlalchemy.exc import IntegrityError
class Account(db.Model):
__tablename__ = 'accounts'
@@ -27,8 +28,13 @@ class Account(db.Model):
customer_id=customer_id,
account_type=account_type
)
db.session.add(account)
db.session.commit()
try:
db.session.add(account)
db.session.commit()
except IntegrityError as err:
db.session.rollback()
raise ValueError(f"Database integrity error: {err}")
return account
@classmethod
+15 -10
View File
@@ -2,6 +2,7 @@ from datetime import datetime, timezone
from sqlalchemy.orm import relationship
from app.extensions import db
from app.models.account import Account
from sqlalchemy.exc import IntegrityError
class Customer(db.Model):
__tablename__ = 'customers'
@@ -33,16 +34,20 @@ class Customer(db.Model):
# Create the customer
customer = cls(id=id, msisdn=msisdn, country_code=country_code)
db.session.add(customer)
# Create an associated account
account = Account.create_account(
id=account_id,
customer_id=id,
account_type=account_type
)
db.session.commit()
try:
db.session.add(customer)
# Create an associated account
account = Account.create_account(
id=account_id,
customer_id=id,
account_type=account_type
)
db.session.commit()
except IntegrityError as err:
db.session.rollback()
raise ValueError(f"Database integrity error: {err}")
return customer
def __repr__(self):
+7 -2
View File
@@ -2,6 +2,7 @@ from datetime import datetime, timezone
from app.extensions import db
from app.models.customer import Customer
from app.models.account import Account
from sqlalchemy.exc import IntegrityError
class Loan(db.Model):
@@ -44,8 +45,12 @@ class Loan(db.Model):
status=status
)
db.session.add(loan)
db.session.commit()
try:
db.session.add(loan)
db.session.commit()
except IntegrityError as err:
db.session.rollback()
raise ValueError(f"Database integrity error: {err}")
return loan
+8 -2
View File
@@ -2,6 +2,7 @@ from datetime import datetime, timezone
from app.extensions import db
from app.models.customer import Customer
from app.models.loan import Loan
from sqlalchemy.exc import IntegrityError
class Repayment(db.Model):
@@ -37,8 +38,13 @@ class Repayment(db.Model):
product_id=product_id,
)
db.session.add(repayment)
db.session.commit()
try:
db.session.add(repayment)
db.session.commit()
except IntegrityError as err:
db.session.rollback()
raise ValueError(f"Database integrity error: {err}")
return repayment
def __repr__(self):