import os
import logging
import sys
from flask import Flask
from models.db import init_app as init_db


def create_app():
    app = Flask(__name__)

    if os.path.exists(os.path.join(os.path.dirname(__file__), 'config_local.py')):
        from config_local import Config
    else:
        from config import Config

    app.config.from_object(Config)
    app.config['SESSION_COOKIE_HTTPONLY'] = True
    app.config['SESSION_COOKIE_SAMESITE'] = 'Lax'

    logging.basicConfig(stream=sys.stderr, level=logging.DEBUG)
    app.logger.setLevel(logging.DEBUG)

    init_db(app)

    from routes.auth import auth_bp, generate_csrf_token
    from routes.dashboard import dashboard_bp
    from routes.prescription import prescription_bp
    from routes.investigation import investigation_bp
    from routes.admin import admin_bp

    app.register_blueprint(auth_bp)
    app.register_blueprint(dashboard_bp)
    app.register_blueprint(prescription_bp)
    app.register_blueprint(investigation_bp)
    app.register_blueprint(admin_bp)

    app.jinja_env.globals['csrf_token'] = generate_csrf_token

    return app


if __name__ == '__main__':
    app = create_app()
    app.run(debug=True)
