from __future__ import annotations
import path_setup  # noqa: F401
from shared.infrastructure.factory import create_base_app

from bp import register_actions, register_data
from services import register_domain_services


def create_app() -> "Quart":
    app = create_base_app(
        "relations",
        domain_services_fn=register_domain_services,
    )

    import os
    from shared.sx.jinja_bridge import load_service_components
    load_service_components(os.path.dirname(__file__), service_name="relations")

    app.register_blueprint(register_actions())
    app.register_blueprint(register_data())

    from shared.sx.handlers import auto_mount_fragment_handlers
    auto_mount_fragment_handlers(app, "relations")

    return app


app = create_app()
