import sys from fastapi import FastAPI from loguru import logger from api.accounts import accounts_router from api.anon import anon_router from api.auth import auth_router from api.feeds import feeds_router from api.general import general_router from api.groups import groups_router from api.memberships import memberships_router from api.pictures import pictures_router from api.swipes import swipes_router from api.users import users_router from db.internal import connect_db, disconnect_db from settings import startup_settings from settings.settings import settings_down, settings_up docs_url = None if startup_settings.swagger_enabled: docs_url = "/api/docs" app = FastAPI( redoc_url=None, docs_url=docs_url, ) def create_app(): logger.configure( handlers=[ { "sink": sys.stdout, "level": startup_settings.log_level, "format": "{level}: {message}", } ] ) app.add_event_handler("startup", connect_db) app.add_event_handler("startup", settings_up) app.include_router(general_router) app.include_router(anon_router) app.include_router(auth_router) app.include_router(users_router) app.include_router(groups_router) app.include_router(memberships_router) app.include_router(accounts_router) app.include_router(feeds_router) app.include_router(swipes_router) app.include_router(pictures_router) app.add_event_handler("shutdown", disconnect_db) app.add_event_handler("shutdown", settings_down) return app