diff --git a/app/config.py b/app/config.py index e237b8c..85ded3a 100644 --- a/app/config.py +++ b/app/config.py @@ -24,6 +24,6 @@ class Config: SQLALCHEMY_DATABASE_URI = ( # f"postgresql+psycopg2://{DATABASE_USER}:{DATABASE_PASSWORD}@{DATABASE_HOST}:{DATABASE_PORT}/{DATABASE_NAME}" - f"postgresql+psycopg2://{DATABASE_USER}:{DATABASE_PASSWORD}@{DATABASE_HOST}:{DATABASE_PORT}/{DATABASE_NAME}?options=-csearch_path%3Dflask_app" + f"postgresql+psycopg2://{DATABASE_USER}:{DATABASE_PASSWORD}@{DATABASE_HOST}:{DATABASE_PORT}/{DATABASE_NAME}" ) SQLALCHEMY_TRACK_MODIFICATIONS = False \ No newline at end of file diff --git a/app/models/account.py b/app/models/account.py index ebe299c..3a66113 100644 --- a/app/models/account.py +++ b/app/models/account.py @@ -1,17 +1,16 @@ -from datetime import datetime +from datetime import datetime, timezone from app import db class Account(db.Model): __tablename__ = 'accounts' - __table_args__ = {'schema': 'flask_app'} id = db.Column(db.String(50), primary_key=True) customer_id = db.Column(db.String(50), nullable=False) account_type = db.Column(db.String(50)) status = db.Column(db.String(20), default='active') lien_amount = db.Column(db.Float, default=0.0) - created_at = db.Column(db.DateTime, default=datetime.utcnow) - updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) + created_at = db.Column(db.DateTime, default=datetime.now(timezone.utc)) + updated_at = db.Column(db.DateTime, default=datetime.now(timezone.utc), onupdate=datetime.now(timezone.utc)) # Database relationship # customer = db.relationship( diff --git a/app/models/customer.py b/app/models/customer.py index 6dc5f7e..aa31073 100644 --- a/app/models/customer.py +++ b/app/models/customer.py @@ -1,15 +1,14 @@ -from datetime import datetime +from datetime import datetime, timezone from app import db class Customer(db.Model): __tablename__ = 'customers' - __table_args__ = {'schema': 'flask_app'} id = db.Column(db.String(50), primary_key=True) 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, default=datetime.utcnow) - updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) + created_at = db.Column(db.DateTime, default=datetime.now(timezone.utc)) + updated_at = db.Column(db.DateTime, default=datetime.now(timezone.utc), onupdate=datetime.now(timezone.utc)) @classmethod def is_eligible(cls, customer_id): diff --git a/app/models/loan.py b/app/models/loan.py index 1c27bec..5b9557b 100644 --- a/app/models/loan.py +++ b/app/models/loan.py @@ -1,10 +1,9 @@ -from datetime import datetime +from datetime import datetime, timezone from app import db class Loan(db.Model): __tablename__ = 'loans' - __table_args__ = {'schema': 'flask_app'} id = db.Column(db.String(50), primary_key=True) customer_id = db.Column(db.String(50), nullable=False) @@ -12,8 +11,8 @@ class Loan(db.Model): product_id = db.Column(db.String(20), nullable=False) principal_amount = db.Column(db.Float, nullable=False) status = db.Column(db.String(20), default='pending') - created_at = db.Column(db.DateTime, default=datetime.utcnow) - updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) + created_at = db.Column(db.DateTime, default=datetime.now(timezone.utc)) + updated_at = db.Column(db.DateTime, default=datetime.now(timezone.utc), onupdate=datetime.now(timezone.utc)) @classmethod diff --git a/app/models/offer.py b/app/models/offer.py index 613b8d2..47fe6b3 100644 --- a/app/models/offer.py +++ b/app/models/offer.py @@ -1,15 +1,16 @@ -from datetime import datetime +from datetime import datetime, timezone from app import db class Offer(db.Model): __tablename__ = 'offers' - __table_args__ = {'schema': 'flask_app'} id = db.Column(db.Integer, primary_key=True) - amount = db.Column(db.Float, nullable=False) - interest_rate = db.Column(db.Float, nullable=False) - created_at = db.Column(db.DateTime, default=datetime.utcnow) - updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) + product_id = db.Column(db.String, nullable=False) + min_amount = db.Column(db.Float, nullable=False) + max_amount = db.Column(db.Float, nullable=False) + tenor = db.Column(db.Integer, nullable=False) + created_at = db.Column(db.DateTime, default=datetime.now(timezone.utc)) + updated_at = db.Column(db.DateTime, default=datetime.now(timezone.utc), onupdate=datetime.now(timezone.utc)) def __repr__(self): return f'' \ No newline at end of file diff --git a/app/models/transaction.py b/app/models/transaction.py index 1bea982..85317bd 100644 --- a/app/models/transaction.py +++ b/app/models/transaction.py @@ -1,17 +1,16 @@ -from datetime import datetime +from datetime import datetime, timezone from app import db class Transaction(db.Model): __tablename__ = 'transactions' - __table_args__ = {'schema': 'flask_app'} id = db.Column(db.String(50), primary_key=True) account_id = db.Column(db.String(50), nullable=False) type = db.Column(db.String(50), nullable=False) amount = db.Column(db.Float, nullable=False) status = db.Column(db.String(20), default='pending') - created_at = db.Column(db.DateTime, default=datetime.utcnow) - updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) + created_at = db.Column(db.DateTime, default=datetime.now(timezone.utc)) + updated_at = db.Column(db.DateTime, default=datetime.now(timezone.utc), onupdate=datetime.now(timezone.utc)) def __repr__(self): return f'' \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 80445eb..7841806 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,5 +1,3 @@ -version: '3.8' - services: db: image: postgres:13 @@ -24,7 +22,7 @@ services: environment: - FLASK_APP=wsgi.py - FLASK_ENV=development - - DATABASE_URL=postgresql+psycopg2://${DATABASE_USER}:${DATABASE_PASSWORD}@db:${DATABASE_PORT}/${DATABASE_NAME}?options=-csearch_path%3Dflask_app + - DATABASE_URL=postgresql+psycopg2://${DATABASE_USER}:${DATABASE_PASSWORD}@db:${DATABASE_PORT}/${DATABASE_NAME} volumes: - .:/app depends_on: diff --git a/migrations/versions/4a12e1b143a4_create_tables.py b/migrations/versions/fd58e10e4968_update_offers.py similarity index 79% rename from migrations/versions/4a12e1b143a4_create_tables.py rename to migrations/versions/fd58e10e4968_update_offers.py index c99e599..eb2d52b 100644 --- a/migrations/versions/4a12e1b143a4_create_tables.py +++ b/migrations/versions/fd58e10e4968_update_offers.py @@ -1,8 +1,8 @@ -"""Create tables +"""Update Offers -Revision ID: 4a12e1b143a4 +Revision ID: fd58e10e4968 Revises: -Create Date: 2025-03-28 09:24:49.669509 +Create Date: 2025-03-28 15:47:35.620664 """ from alembic import op @@ -10,7 +10,7 @@ import sqlalchemy as sa # revision identifiers, used by Alembic. -revision = '4a12e1b143a4' +revision = 'fd58e10e4968' down_revision = None branch_labels = None depends_on = None @@ -26,8 +26,7 @@ def upgrade(): sa.Column('lien_amount', sa.Float(), nullable=True), sa.Column('created_at', sa.DateTime(), nullable=True), sa.Column('updated_at', sa.DateTime(), nullable=True), - sa.PrimaryKeyConstraint('id'), - schema='flask_app' + sa.PrimaryKeyConstraint('id') ) op.create_table('customers', sa.Column('id', sa.String(length=50), nullable=False), @@ -36,8 +35,7 @@ def upgrade(): sa.Column('created_at', sa.DateTime(), nullable=True), sa.Column('updated_at', sa.DateTime(), nullable=True), sa.PrimaryKeyConstraint('id'), - sa.UniqueConstraint('msisdn'), - schema='flask_app' + sa.UniqueConstraint('msisdn') ) op.create_table('loans', sa.Column('id', sa.String(length=50), nullable=False), @@ -48,8 +46,7 @@ def upgrade(): sa.Column('status', sa.String(length=20), nullable=True), sa.Column('created_at', sa.DateTime(), nullable=True), sa.Column('updated_at', sa.DateTime(), nullable=True), - sa.PrimaryKeyConstraint('id'), - schema='flask_app' + sa.PrimaryKeyConstraint('id') ) op.create_table('transactions', sa.Column('id', sa.String(length=50), nullable=False), @@ -59,16 +56,20 @@ def upgrade(): sa.Column('status', sa.String(length=20), nullable=True), sa.Column('created_at', sa.DateTime(), nullable=True), sa.Column('updated_at', sa.DateTime(), nullable=True), - sa.PrimaryKeyConstraint('id'), - schema='flask_app' + sa.PrimaryKeyConstraint('id') ) + op.drop_table('test') # ### end Alembic commands ### def downgrade(): # ### commands auto generated by Alembic - please adjust! ### - op.drop_table('transactions', schema='flask_app') - op.drop_table('loans', schema='flask_app') - op.drop_table('customers', schema='flask_app') - op.drop_table('accounts', schema='flask_app') + op.create_table('test', + sa.Column('id', sa.INTEGER(), autoincrement=True, nullable=False), + sa.Column('name', sa.VARCHAR(length=125), autoincrement=False, nullable=True) + ) + op.drop_table('transactions') + op.drop_table('loans') + op.drop_table('customers') + op.drop_table('accounts') # ### end Alembic commands ###