from flask import Flask import os from flask_swagger_ui import get_swaggerui_blueprint from flask_cors import CORS from app.config import Config from app.api.routes import api from app.errors import register_error_handlers from flask_sqlalchemy import SQLAlchemy from flask_migrate import Migrate db = SQLAlchemy() migrate = Migrate() def create_app(): """ Factory function to create a Flask app instance """ app = Flask(__name__) # Load configuration app.config.from_object(Config) CORS(app) # Swagger Doc SWAGGER_URL = app.config.get("SWAGGER_URL") API_URL = app.config.get("API_URL") # Register blueprints app.register_blueprint(api) swagger_ui_blueprint = get_swaggerui_blueprint(SWAGGER_URL, API_URL) app.register_blueprint(swagger_ui_blueprint, url_prefix=SWAGGER_URL) # Error Handlers register_error_handlers(app) import logging from sqlalchemy import create_engine # Set up logging logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) # Log the database URI logger.info(f"Database URI: {app.config['SQLALCHEMY_DATABASE_URI']}") # Database and Migrations db.init_app(app) migrate.init_app(app, db) return app