# app.py from pprint import pprint from sqlalchemy import text from db.models.Path import Path from logging_handlers.DatabaseLogHandler import DatabaseLogHandler from urllib.parse import urlparse from api import limiter from flask import Flask, request, url_for from flask_cors import CORS import api import env_provider import db import logging logger = logging.getLogger(__name__) db_handler = DatabaseLogHandler(application="backend") formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') db_handler.setFormatter(formatter) logger.addHandler(db_handler) logger.setLevel(logging.INFO) try: db.create_all() except Exception as e: print(f"db not ready {e}") try: with db.get_db() as session: root_path = session.query(Path).filter(Path.id == 1).first() if not root_path: session.execute(text("SET FOREIGN_KEY_CHECKS=0;")) #session.execute(text("ALTER TABLE path AUTO_INCREMENT = 0;")) session.execute(text("ALTER TABLE path MODIFY COLUMN id INT;")) root_path = Path(id=1, name="") session.add(root_path) session.commit() session.execute(text("ALTER TABLE path MODIFY COLUMN id INT AUTO_INCREMENT;")) session.execute(text("SET FOREIGN_KEY_CHECKS=1;")) logger.info("Root path created") except Exception as e: logger.error(f"Failed to create root path {e}") app = Flask(__name__) #app.config['SERVER_NAME'] = env_provider.BACKEND_HOST app.secret_key = env_provider.SESSION_SECRET_KEY CORS(app, resources={r"/api/*": {"origins": [ env_provider.KC_HOST, env_provider.FRONTEND_HOST, r"https?://localhost:\d+", r"https?://127\.0\.0\.1:\d+", ]}}) limiter.init_app(app) api.register_blueprints(app) @app.before_request def log_request(): if request.path.startswith("/api/log"): return logger.info(f"Request received: {request.method} {request.path} from {request.remote_addr}") if __name__ == '__main__': #logger.info("Starting app") pprint(env_provider.summerize()) app.run(host='0.0.0.0', port=5000)