From 89760f81edda8a0e6bb672383935f7cec5deba9f Mon Sep 17 00:00:00 2001 From: VivianDee <115420678+VivianDee@users.noreply.github.com> Date: Mon, 19 May 2025 11:51:44 +0100 Subject: [PATCH] [update]: Offers Model --- app/models/account.py | 2 +- app/models/charge.py | 2 +- app/models/customer.py | 2 +- app/models/loan.py | 2 +- app/models/loan_charge.py | 2 +- app/models/loan_repayment_schedule.py | 2 +- app/models/offer.py | 6 ++++- app/models/rac_checks.py | 2 +- app/models/repayment.py | 2 +- app/models/transaction.py | 2 +- app/models/transaction_offers.py | 3 +-- migrations/versions/e8dd9b841ad7_.py | 36 +++++++++++++++++++++++++++ 12 files changed, 51 insertions(+), 12 deletions(-) create mode 100644 migrations/versions/e8dd9b841ad7_.py diff --git a/app/models/account.py b/app/models/account.py index 1ee197d..9836363 100644 --- a/app/models/account.py +++ b/app/models/account.py @@ -13,7 +13,7 @@ class Account(db.Model): status = db.Column(db.String(20), default='active') lien_amount = db.Column(db.Float, default=0.0) created_at = db.Column(db.DateTime(timezone=True), server_default=func.now()) - updated_at = db.Column(db.DateTime(timezone=True), onupdate=func.now()) + updated_at = db.Column(db.DateTime(timezone=True), server_default=func.now(), onupdate=func.now()) customer = relationship( "Customer", diff --git a/app/models/charge.py b/app/models/charge.py index 17986b1..076ab1f 100644 --- a/app/models/charge.py +++ b/app/models/charge.py @@ -14,7 +14,7 @@ class Charge(db.Model): description = db.Column(db.Text, nullable=True) due = db.Column(db.Integer, nullable=False) created_at = db.Column(db.DateTime(timezone=True), server_default=func.now()) - updated_at = db.Column(db.DateTime(timezone=True), onupdate=func.now()) + updated_at = db.Column(db.DateTime(timezone=True), server_default=func.now(), onupdate=func.now()) offer = relationship( "Offer", primaryjoin="Charge.offer_id == Offer.id", diff --git a/app/models/customer.py b/app/models/customer.py index 036712c..c795611 100644 --- a/app/models/customer.py +++ b/app/models/customer.py @@ -12,7 +12,7 @@ class Customer(db.Model): 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(timezone=True), server_default=func.now()) - updated_at = db.Column(db.DateTime(timezone=True), onupdate=func.now()) + updated_at = db.Column(db.DateTime(timezone=True), server_default=func.now(), onupdate=func.now()) accounts = relationship( "Account", primaryjoin="Customer.id == Account.customer_id", diff --git a/app/models/loan.py b/app/models/loan.py index 6a0b9ab..235e45c 100644 --- a/app/models/loan.py +++ b/app/models/loan.py @@ -39,7 +39,7 @@ class Loan(db.Model): tenor = db.Column(db.Integer, nullable=True) due_date = db.Column(db.DateTime, nullable=True) created_at = db.Column(db.DateTime(timezone=True), server_default=func.now()) - updated_at = db.Column(db.DateTime(timezone=True), onupdate=func.now()) + updated_at = db.Column(db.DateTime(timezone=True), server_default=func.now(), onupdate=func.now()) eligible_amount = db.Column(db.Float, nullable=True, default=0.0) disburse_date = db.Column(db.DateTime, nullable=True) disburse_verify = db.Column(db.DateTime, nullable=True) diff --git a/app/models/loan_charge.py b/app/models/loan_charge.py index 36c451d..bdbd359 100644 --- a/app/models/loan_charge.py +++ b/app/models/loan_charge.py @@ -18,7 +18,7 @@ class LoanCharge(db.Model): due = db.Column(db.Integer, nullable=False) due_date = db.Column(db.DateTime, nullable=True) created_at = db.Column(db.DateTime(timezone=True), server_default=func.now()) - updated_at = db.Column(db.DateTime(timezone=True), onupdate=func.now()) + updated_at = db.Column(db.DateTime(timezone=True), server_default=func.now(), onupdate=func.now()) loan = relationship( "Loan", primaryjoin="LoanCharge.loan_id == Loan.id", diff --git a/app/models/loan_repayment_schedule.py b/app/models/loan_repayment_schedule.py index 62aa952..78963c1 100644 --- a/app/models/loan_repayment_schedule.py +++ b/app/models/loan_repayment_schedule.py @@ -19,7 +19,7 @@ class LoanRepaymentSchedule(db.Model): paid_at = db.Column(db.DateTime, nullable=True) created_at = db.Column(db.DateTime(timezone=True), server_default=func.now()) - updated_at = db.Column(db.DateTime(timezone=True), onupdate=func.now()) + updated_at = db.Column(db.DateTime(timezone=True), server_default=func.now(), onupdate=func.now()) loan = relationship( "Loan", primaryjoin="LoanRepaymentSchedule.loan_id == Loan.id", diff --git a/app/models/offer.py b/app/models/offer.py index b5c0b70..c1e32d2 100644 --- a/app/models/offer.py +++ b/app/models/offer.py @@ -18,8 +18,12 @@ class Offer(db.Model): insurance_rate = db.Column(db.Float, default=1.0) vat_rate = db.Column(db.Float, default=7.5) list_order = db.Column(db.Integer, nullable=True) + max_daily_loans = db.Column(db.Integer, nullable=True) + max_active_loans = db.Column(db.Integer, nullable=True) + max_life_loans = db.Column(db.Integer, nullable=True) created_at = db.Column(db.DateTime(timezone=True), server_default=func.now()) - updated_at = db.Column(db.DateTime(timezone=True), onupdate=func.now()) + updated_at = db.Column(db.DateTime(timezone=True), server_default=func.now(), onupdate=func.now()) + charges = relationship( "Charge", primaryjoin="Offer.id == Charge.offer_id", diff --git a/app/models/rac_checks.py b/app/models/rac_checks.py index dd6a6f1..1e74602 100644 --- a/app/models/rac_checks.py +++ b/app/models/rac_checks.py @@ -15,7 +15,7 @@ class RACCheck(db.Model): account_id = db.Column(db.String, nullable=False) rac_response = db.Column(db.JSON, nullable=False) created_at = db.Column(db.DateTime(timezone=True), server_default=func.now()) - updated_at = db.Column(db.DateTime(timezone=True), onupdate=func.now()) + updated_at = db.Column(db.DateTime(timezone=True), server_default=func.now(), onupdate=func.now()) @classmethod def add_rac_check(cls, customer_id, account_id, transaction_id, data = None): diff --git a/app/models/repayment.py b/app/models/repayment.py index f1faea4..2baa114 100644 --- a/app/models/repayment.py +++ b/app/models/repayment.py @@ -19,7 +19,7 @@ class Repayment(db.Model): customer_id = db.Column(db.String(50), nullable=False) product_id = db.Column(db.String(20), nullable=True) created_at = db.Column(db.DateTime(timezone=True), server_default=func.now()) - updated_at = db.Column(db.DateTime(timezone=True), onupdate=func.now()) + updated_at = db.Column(db.DateTime(timezone=True), server_default=func.now(), onupdate=func.now()) transaction_id = db.Column(db.String(50), nullable=True) @classmethod diff --git a/app/models/transaction.py b/app/models/transaction.py index a772905..581bfaf 100644 --- a/app/models/transaction.py +++ b/app/models/transaction.py @@ -18,7 +18,7 @@ class Transaction(db.Model): type = db.Column(db.String(50), nullable=False) channel = db.Column(db.String(50), nullable=False) created_at = db.Column(db.DateTime(timezone=True), server_default=func.now()) - updated_at = db.Column(db.DateTime(timezone=True), onupdate=func.now()) + updated_at = db.Column(db.DateTime(timezone=True), server_default=func.now(), onupdate=func.now()) def __repr__(self): return f'' diff --git a/app/models/transaction_offers.py b/app/models/transaction_offers.py index 87b42a9..8b80b6c 100644 --- a/app/models/transaction_offers.py +++ b/app/models/transaction_offers.py @@ -22,7 +22,7 @@ class TransactionOffer(db.Model): tenor = db.Column(db.Integer, nullable=True) # tenor in months, typically created_at = db.Column(db.DateTime(timezone=True), server_default=func.now()) - updated_at = db.Column(db.DateTime(timezone=True), onupdate=func.now()) + updated_at = db.Column(db.DateTime(timezone=True), server_default=func.now(), onupdate=func.now()) customer = relationship( "Customer", primaryjoin="Customer.id == TransactionOffer.customer_id", @@ -31,7 +31,6 @@ class TransactionOffer(db.Model): ) @classmethod - def is_valid_transaction_offer(cls, transaction_offer, customer_id, product_id): transaction_offer = cls.query.filter_by( id = transaction_offer, diff --git a/migrations/versions/e8dd9b841ad7_.py b/migrations/versions/e8dd9b841ad7_.py new file mode 100644 index 0000000..22a3b68 --- /dev/null +++ b/migrations/versions/e8dd9b841ad7_.py @@ -0,0 +1,36 @@ +"""empty message + +Revision ID: e8dd9b841ad7 +Revises: 2eee4157505f +Create Date: 2025-05-19 11:46:19.204637 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'e8dd9b841ad7' +down_revision = '2eee4157505f' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('offers', schema=None) as batch_op: + batch_op.add_column(sa.Column('max_daily_loans', sa.Integer(), nullable=True)) + batch_op.add_column(sa.Column('max_active_loans', sa.Integer(), nullable=True)) + batch_op.add_column(sa.Column('max_life_loans', sa.Integer(), nullable=True)) + + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('offers', schema=None) as batch_op: + batch_op.drop_column('max_life_loans') + batch_op.drop_column('max_active_loans') + batch_op.drop_column('max_daily_loans') + + # ### end Alembic commands ###