From 4ea06de2bcf240791b147a572fc167eff5f025eb Mon Sep 17 00:00:00 2001 From: VivianDee <115420678+VivianDee@users.noreply.github.com> Date: Thu, 3 Jul 2025 14:56:55 +0100 Subject: [PATCH] [add]: migration --- ...n_30_13_57_38_utc_.py => 33e09efd85e3_.py} | 65 +++++++++++++++++-- scripts/entrypoint.sh | 4 +- 2 files changed, 60 insertions(+), 9 deletions(-) rename migrations/versions/{bf4d402e5303_migration_on_mon_jun_30_13_57_38_utc_.py => 33e09efd85e3_.py} (86%) diff --git a/migrations/versions/bf4d402e5303_migration_on_mon_jun_30_13_57_38_utc_.py b/migrations/versions/33e09efd85e3_.py similarity index 86% rename from migrations/versions/bf4d402e5303_migration_on_mon_jun_30_13_57_38_utc_.py rename to migrations/versions/33e09efd85e3_.py index 0f21d2f..af74f67 100644 --- a/migrations/versions/bf4d402e5303_migration_on_mon_jun_30_13_57_38_utc_.py +++ b/migrations/versions/33e09efd85e3_.py @@ -1,19 +1,37 @@ -"""Migration on Mon Jun 30 13:57:38 UTC 2025 +"""empty message -Revision ID: bf4d402e5303 +Revision ID: 33e09efd85e3 Revises: -Create Date: 2025-06-30 13:57:46.908628 +Create Date: 2025-07-03 14:07:14.424548 """ from alembic import op import sqlalchemy as sa +from sqlalchemy import literal_column +from sqlalchemy import text # revision identifiers, used by Alembic. -revision = 'bf4d402e5303' +revision = '33e09efd85e3' down_revision = None branch_labels = None depends_on = None +sequences_and_triggers = [ + ("transactions", "transactions_seq", "trg_transactions_id"), + ("transaction_offers", "transaction_offers_seq", "trg_transaction_offers_id"), + ("salaries", "salaries_seq", "trg_salaries_id"), + ("repayments_data", "repayments_data_seq", "trg_repayments_data_id"), + ("repayments", "repayments_seq", "trg_repayments_id"), + ("rac_checks", "rac_checks_seq", "trg_rac_checks_id"), + ("loans", "loans_seq", "trg_loans_id"), + ( + "loan_repayment_schedules", + "loan_repayment_schedules_seq", + "trg_loan_repayment_schedules_id", + ), + ("loan_charges", "loan_charges_seq", "trg_loan_charges_id"), + ("charges", "charges_seq", "trg_charges_id"), +] def upgrade(): @@ -92,7 +110,6 @@ def upgrade(): sa.Column('continuous_fee', sa.Float(), nullable=True), sa.Column('upfront_fee', sa.Float(), nullable=True), sa.Column('repayment_amount', sa.Float(), nullable=True), - sa.Column('balance', sa.Float(), nullable=True), sa.Column('installment_amount', sa.Float(), nullable=True), sa.Column('status', sa.String(length=20), nullable=True), sa.Column('tenor', sa.Integer(), nullable=True), @@ -133,7 +150,7 @@ def upgrade(): sa.Column('transaction_id', sa.String(length=50), nullable=False), sa.Column('customer_id', sa.String(length=50), nullable=False), sa.Column('account_id', sa.String(length=50), nullable=False), - sa.Column('rac_response', sa.String(length=225), nullable=False), + sa.Column('rac_response', sa.Text(), nullable=False), sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=True), sa.Column('updated_at', sa.DateTime(timezone=True), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=True), sa.PrimaryKeyConstraint('id') @@ -208,7 +225,37 @@ def upgrade(): sa.Column('updated_at', sa.DateTime(timezone=True), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=True), sa.PrimaryKeyConstraint('id') ) - # ### end Alembic commands ### + + for table, seq, trg in sequences_and_triggers: + op.execute( + text( + f""" + BEGIN + EXECUTE IMMEDIATE 'CREATE SEQUENCE {seq} START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE'; + EXCEPTION + WHEN OTHERS THEN + IF SQLCODE != -955 THEN RAISE; END IF; + END; + """ + ) + ) + + op.execute( + text( + f""" + CREATE OR REPLACE TRIGGER {trg} + BEFORE INSERT ON {table} + FOR EACH ROW + BEGIN + IF ||':'||'NEW.id IS NULL THEN + SELECT {seq}.NEXTVAL INTO '||':'||'NEW.id FROM dual; + END IF; + END; + """ + ) + ) + + def downgrade(): @@ -227,3 +274,7 @@ def downgrade(): op.drop_table('charges') op.drop_table('accounts') # ### end Alembic commands ### + + for table, seq, trg in sequences_and_triggers: + op.execute(text(f"DROP TRIGGER {trg}")) + op.execute(text(f"DROP SEQUENCE {seq}")) diff --git a/scripts/entrypoint.sh b/scripts/entrypoint.sh index 9066c97..9a12075 100755 --- a/scripts/entrypoint.sh +++ b/scripts/entrypoint.sh @@ -1,8 +1,8 @@ #!/bin/sh # echo "Running DB migrations..." -flask db migrate -m "Migration on $(date)" -flask db upgrade +# flask db migrate -m "Migration on $(date)" +# flask db upgrade echo "Starting Gunicorn server..." exec gunicorn -w 4 -b 0.0.0.0:5000 wsgi:wsgi_app