The backend component to interface with the smart contract.
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

41 Zeilen
1.0 KiB

  1. from contextlib import asynccontextmanager
  2. from fastapi import FastAPI
  3. from fastapi.middleware.cors import CORSMiddleware
  4. from app.core.config import settings
  5. from app.api.v1.api import api_router
  6. from app.db.base import engine, Base
  7. async def init_db():
  8. async with engine.begin() as conn:
  9. await conn.run_sync(Base.metadata.create_all)
  10. @asynccontextmanager
  11. async def lifespan(application: FastAPI):
  12. await init_db()
  13. yield
  14. app = FastAPI(
  15. title=settings.PROJECT_NAME,
  16. version=settings.VERSION,
  17. description=settings.DESCRIPTION,
  18. openapi_url=f"{settings.API_V1_STR}/openapi.json",
  19. lifespan=lifespan,
  20. )
  21. # Set up CORS middleware
  22. app.add_middleware(
  23. CORSMiddleware,
  24. allow_origins=settings.ALLOWED_ORIGINS,
  25. allow_credentials=True,
  26. allow_methods=["*"],
  27. allow_headers=["*"],
  28. )
  29. # Include API router
  30. app.include_router(router=api_router, prefix=settings.API_V1_STR)
  31. if __name__ == "__main__":
  32. import uvicorn
  33. uvicorn.run("main:app", host="127.0.0.1", port=8000, reload=True)