[add]: ref_id and ref_model for transactions. And db session and rollback for transactions

This commit is contained in:
VivianDee
2025-04-10 23:06:51 +01:00
parent e5320c075e
commit a196d4d3c4
14 changed files with 123 additions and 88 deletions
-2
View File
@@ -31,9 +31,7 @@ class Account(db.Model):
try:
db.session.add(account)
db.session.commit()
except IntegrityError as err:
db.session.rollback()
raise ValueError(f"Database integrity error: {err}")
return account
-2
View File
@@ -44,9 +44,7 @@ class Customer(db.Model):
account_type=account_type
)
db.session.commit()
except IntegrityError as err:
db.session.rollback()
raise ValueError(f"Database integrity error: {err}")
return customer
+1 -4
View File
@@ -47,9 +47,7 @@ class Loan(db.Model):
try:
db.session.add(loan)
db.session.commit()
except IntegrityError as err:
db.session.rollback()
raise ValueError(f"Database integrity error: {err}")
return loan
@@ -92,8 +90,7 @@ class Loan(db.Model):
# Update loan status and the updated_at timestamp
loan.status = status
db.session.commit()
def __repr__(self):
return f'<Loan {self.id}>'
-2
View File
@@ -44,9 +44,7 @@ class Repayment(db.Model):
try:
db.session.add(repayment)
db.session.commit()
except IntegrityError as err:
db.session.rollback()
raise ValueError(f"Database integrity error: {err}")
return repayment
+8 -9
View File
@@ -10,9 +10,9 @@ class Transaction(db.Model):
primary_key=True,
autoincrement=True,
)
#id = db.Column(db.Int, primary_key=True)
transaction_id = db.Column(db.String(50), nullable=False)
account_id = db.Column(db.String(50), nullable=False)
ref_id = db.Column(db.String(50), nullable=False)
ref_model = db.Column(db.String(50), nullable=True, default='account')
type = db.Column(db.String(50), nullable=False)
channel = db.Column(db.String(50), nullable=False)
created_at = db.Column(db.DateTime, default=datetime.now(timezone.utc))
@@ -22,7 +22,7 @@ class Transaction(db.Model):
return f'<Transaction {self.id}>'
@classmethod
def create_transaction(cls, transaction_id, account_id, type, channel):
def create_transaction(cls, transaction_id, ref_id, ref_model, type, channel):
# if cls.query.filter_by(transaction_id=transaction_id).first():
# raise ValueError("Duplicate Transaction")
@@ -33,17 +33,16 @@ class Transaction(db.Model):
transaction = cls(
transaction_id=transaction_id,
account_id=account_id,
type=type,
channel=channel
transaction_id = transaction_id,
ref_id = ref_id,
ref_model = ref_model,
type = type,
channel = channel
)
try:
db.session.add(transaction)
db.session.commit()
except IntegrityError as err:
db.session.rollback()
raise ValueError(f"Database integrity error: {err}")
return transaction