# application/__init__.py
from flask import Flask
from .config import Config
from .extensions import jwt, cors
from .auth.routes import auth_bp
from .inverter.routes import inverter_bp
from .energy.routes import energy_bp
from .user.routes import user_bp
from .db import Database
from .db.query_executor import QueryResults

def create_app():
    app = Flask(__name__)
    app.config.from_object(Config)

    # Init extensions
    jwt.init_app(app)
    cors.init_app(app)

    # Create global DB + QueryResults instance
    db_instance = Database(commit=True)
    app.extensions['db'] = db_instance
    app.extensions['query_results'] = QueryResults(db_instance)

    # Register blueprints
    app.register_blueprint(auth_bp, url_prefix='/api/auth')
    app.register_blueprint(inverter_bp, url_prefix='/api/inverter')
    app.register_blueprint(energy_bp, url_prefix='/api/energy')
    app.register_blueprint(user_bp, url_prefix='/api/user')

    return app
