diff --git a/app/models/account.py b/app/models/account.py index 0b11842..1f52087 100644 --- a/app/models/account.py +++ b/app/models/account.py @@ -2,6 +2,9 @@ from datetime import datetime 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), db.ForeignKey('customer.id'), nullable=False) account_type = db.Column(db.String(50)) diff --git a/app/models/customer.py b/app/models/customer.py index eb83fb3..3f70a8f 100644 --- a/app/models/customer.py +++ b/app/models/customer.py @@ -2,6 +2,9 @@ from datetime import datetime 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) diff --git a/app/models/loan.py b/app/models/loan.py index 4774508..879834a 100644 --- a/app/models/loan.py +++ b/app/models/loan.py @@ -3,6 +3,9 @@ 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), db.ForeignKey('customer.id'), nullable=False) account_id = db.Column(db.String(50), db.ForeignKey('account.id'), nullable=False) diff --git a/app/models/offer.py b/app/models/offer.py index 75dac3d..613b8d2 100644 --- a/app/models/offer.py +++ b/app/models/offer.py @@ -2,6 +2,9 @@ from datetime import datetime 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) diff --git a/app/models/transaction.py b/app/models/transaction.py index 1a1cfd3..73bacf8 100644 --- a/app/models/transaction.py +++ b/app/models/transaction.py @@ -2,6 +2,9 @@ from datetime import datetime 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), db.ForeignKey('account.id'), nullable=False) type = db.Column(db.String(50), nullable=False) diff --git a/migrations/env.py b/migrations/env.py deleted file mode 100644 index 4c97092..0000000 --- a/migrations/env.py +++ /dev/null @@ -1,113 +0,0 @@ -import logging -from logging.config import fileConfig - -from flask import current_app - -from alembic import context - -# this is the Alembic Config object, which provides -# access to the values within the .ini file in use. -config = context.config - -# Interpret the config file for Python logging. -# This line sets up loggers basically. -fileConfig(config.config_file_name) -logger = logging.getLogger('alembic.env') - - -def get_engine(): - try: - # this works with Flask-SQLAlchemy<3 and Alchemical - return current_app.extensions['migrate'].db.get_engine() - except (TypeError, AttributeError): - # this works with Flask-SQLAlchemy>=3 - return current_app.extensions['migrate'].db.engine - - -def get_engine_url(): - try: - return get_engine().url.render_as_string(hide_password=False).replace( - '%', '%%') - except AttributeError: - return str(get_engine().url).replace('%', '%%') - - -# add your model's MetaData object here -# for 'autogenerate' support -# from myapp import mymodel -# target_metadata = mymodel.Base.metadata -config.set_main_option('sqlalchemy.url', get_engine_url()) -target_db = current_app.extensions['migrate'].db - -# other values from the config, defined by the needs of env.py, -# can be acquired: -# my_important_option = config.get_main_option("my_important_option") -# ... etc. - - -def get_metadata(): - if hasattr(target_db, 'metadatas'): - return target_db.metadatas[None] - return target_db.metadata - - -def run_migrations_offline(): - """Run migrations in 'offline' mode. - - This configures the context with just a URL - and not an Engine, though an Engine is acceptable - here as well. By skipping the Engine creation - we don't even need a DBAPI to be available. - - Calls to context.execute() here emit the given string to the - script output. - - """ - url = config.get_main_option("sqlalchemy.url") - context.configure( - url=url, target_metadata=get_metadata(), literal_binds=True - ) - - with context.begin_transaction(): - context.run_migrations() - - -def run_migrations_online(): - """Run migrations in 'online' mode. - - In this scenario we need to create an Engine - and associate a connection with the context. - - """ - - # this callback is used to prevent an auto-migration from being generated - # when there are no changes to the schema - # reference: http://alembic.zzzcomputing.com/en/latest/cookbook.html - def process_revision_directives(context, revision, directives): - if getattr(config.cmd_opts, 'autogenerate', False): - script = directives[0] - if script.upgrade_ops.is_empty(): - directives[:] = [] - logger.info('No changes in schema detected.') - - conf_args = current_app.extensions['migrate'].configure_args - if conf_args.get("process_revision_directives") is None: - conf_args["process_revision_directives"] = process_revision_directives - - connectable = get_engine() - - with connectable.connect() as connection: - context.configure( - connection=connection, - target_metadata=get_metadata(), - **conf_args - ) - - with context.begin_transaction(): - context.run_migrations() - - -if context.is_offline_mode(): - run_migrations_offline() -else: - run_migrations_online()