diff --git a/app/api/services/base_service.py b/app/api/services/base_service.py index 8616fd8..4382181 100644 --- a/app/api/services/base_service.py +++ b/app/api/services/base_service.py @@ -50,8 +50,7 @@ class BaseService: """ return Transaction.create_transaction( transaction_id = validated_data.get("transactionId"), - ref_id = validated_data.get("refId") or validated_data.get("accountId"), - ref_model = validated_data.get("refModel", "account"), + account_id = validated_data.get("accountId", None), type = cls.TRANSACTION_TYPE, channel = validated_data.get("channel"), ) diff --git a/app/api/services/loan_status.py b/app/api/services/loan_status.py index f80b7f2..4ec7740 100644 --- a/app/api/services/loan_status.py +++ b/app/api/services/loan_status.py @@ -35,11 +35,6 @@ class LoanStatusService(BaseService): # Get loans loans = [loan.to_dict() for loan in customer.loans] - - validated_data['refId'] = customer.id - validated_data['refModel'] = "customer" - - transaction = LoanStatusService.log_transaction(validated_data = validated_data) if not transaction: diff --git a/app/api/services/provide_loan.py b/app/api/services/provide_loan.py index b496265..a4abf64 100644 --- a/app/api/services/provide_loan.py +++ b/app/api/services/provide_loan.py @@ -51,10 +51,6 @@ class ProvideLoanService(BaseService): "message": "Failed to save loan details." }), 400 - db.session.flush() - validated_data['refId'] = loan.id - validated_data['refModel'] = "loan" - # Log Transaction transaction = ProvideLoanService.log_transaction(validated_data = validated_data) diff --git a/app/api/services/repayment.py b/app/api/services/repayment.py index 33be586..4d400db 100644 --- a/app/api/services/repayment.py +++ b/app/api/services/repayment.py @@ -47,11 +47,7 @@ class RepaymentService(BaseService): return jsonify({ "message": "Failed to save repayment details." }), 400 - - db.session.flush() - - validated_data['refId'] = repayment.id - validated_data['refModel'] = "repayment" + #Update Loan status Loan.update_status(loan_id = loan_id, status = LoanStatus.REPAID) diff --git a/app/models/transaction.py b/app/models/transaction.py index 1775d2c..9b18479 100644 --- a/app/models/transaction.py +++ b/app/models/transaction.py @@ -1,5 +1,6 @@ from datetime import datetime, timezone from app.extensions import db +from app.models import account from sqlalchemy.exc import IntegrityError from sqlalchemy import and_, or_, not_ @@ -11,8 +12,7 @@ class Transaction(db.Model): autoincrement=True, ) transaction_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') + account_id = db.Column(db.String(50), nullable=True) 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'' @classmethod - def create_transaction(cls, transaction_id, ref_id, ref_model, type, channel): + def create_transaction(cls, transaction_id, account_id, type, channel): # if cls.query.filter_by(transaction_id=transaction_id).first(): # raise ValueError("Duplicate Transaction") @@ -34,8 +34,7 @@ class Transaction(db.Model): transaction = cls( transaction_id = transaction_id, - ref_id = ref_id, - ref_model = ref_model, + account_id = account_id, type = type, channel = channel ) diff --git a/migrations/versions/fd447d78b161_migration_on_fri_apr_11_12_02_45_utc_.py b/migrations/versions/fd447d78b161_migration_on_fri_apr_11_12_02_45_utc_.py new file mode 100644 index 0000000..eff663e --- /dev/null +++ b/migrations/versions/fd447d78b161_migration_on_fri_apr_11_12_02_45_utc_.py @@ -0,0 +1,38 @@ +"""Migration on Fri Apr 11 12:02:45 UTC 2025 + +Revision ID: fd447d78b161 +Revises: 1340e7e578b9 +Create Date: 2025-04-11 12:03:28.346671 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'fd447d78b161' +down_revision = '1340e7e578b9' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('transactions', schema=None) as batch_op: + batch_op.alter_column('account_id', + existing_type=sa.VARCHAR(length=50), + nullable=True) + batch_op.drop_column('ref_model') + + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('transactions', schema=None) as batch_op: + batch_op.add_column(sa.Column('ref_model', sa.VARCHAR(length=50), autoincrement=False, nullable=True)) + batch_op.alter_column('account_id', + existing_type=sa.VARCHAR(length=50), + nullable=False) + + # ### end Alembic commands ###