__init__.py 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import os
  2. import logging
  3. import asyncio
  4. from fastapi import FastAPI
  5. from fastapi.middleware.cors import CORSMiddleware
  6. from .api import other, game
  7. from .db import init_db
  8. from .point_gen import aiohttp_client, points
  9. logging.config.fileConfig('logging.conf', disable_existing_loggers=False)
  10. app = FastAPI()
  11. app.include_router(other, prefix="/terrassumptions/api")
  12. app.include_router(game, prefix="/terrassumptions/api/game")
  13. app.add_middleware(
  14. CORSMiddleware,
  15. allow_origins=["http://localhost:3000", "https://kirkleon.ddns.net", "https://hiram.services"],
  16. allow_methods=["*"],
  17. allow_headers=["*"],
  18. )
  19. restocking_task = None
  20. @app.on_event("startup")
  21. def startup():
  22. init_db(os.environ.get("SQLALCHEMY_URL", "sqlite:////tmp/terrassumptions.db"), connect_args={"check_same_thread": False})
  23. restocking_task = asyncio.create_task(points.restock_all())
  24. @app.on_event("shutdown")
  25. async def shutdown_event():
  26. await aiohttp_client.close()
  27. if restocking_task is not None and not restocking_task.done():
  28. restocking_task.cancel()