"""Flask application entry point.""" from __future__ import annotations import os from flask import Flask, jsonify from lawrisk.utils.env_loader import load_env from lawrisk.middleware.smart_cors_middleware import init_smart_cors from lawrisk.services.lawrisk_service import ensure_database, ensure_schema from lawrisk.api.v1 import v1_bp from lawrisk.api.v2 import v2_bp def create_app() -> Flask: """Create and configure Flask application.""" # Load .env before creating app to make CORS/env configs available load_env() # Ensure DB and schema exist before serving try: ensure_database() ensure_schema() except Exception: # Do not block app start; errors will surface on first request pass app = Flask(__name__) # Enable CORS using existing middleware init_smart_cors(app) # Register blueprints app.register_blueprint(v1_bp) app.register_blueprint(v2_bp) # Basic health check @app.get("/healthz") def healthz(): return jsonify({"status": "ok"}) app.logger.setLevel("INFO") app.logger.info("Registered routes:") for rule in sorted(app.url_map.iter_rules(), key=lambda r: r.rule): methods = ",".join(sorted(rule.methods - {"HEAD", "OPTIONS"})) app.logger.info(" %s -> %s", rule.rule, methods) return app if __name__ == "__main__": port = int(os.getenv("PORT", "8000")) app = create_app() app.run(host="0.0.0.0", port=port)