from contextlib import asynccontextmanager from fastapi import FastAPI from fastapi.security import OAuth2PasswordBearer from fastapi.middleware.cors import CORSMiddleware from fastapi_pagination import add_pagination from db import create_db_and_tables from user import user_router, auth_router, create_admin_account from account.routes import router as account_router from category.routes import router as category_router @asynccontextmanager async def lifespan(app: FastAPI): create_db_and_tables() create_admin_account() yield #do something before end app = FastAPI(lifespan=lifespan) add_pagination(app) origins = [ "http://localhost:8000", "http://localhost:5173", ] app.add_middleware( CORSMiddleware, allow_origins=origins, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) app.include_router(auth_router, prefix="/auth", tags=["auth"], ) app.include_router(user_router, prefix="/users", tags=["users"]) app.include_router(account_router, prefix="/accounts", tags=["accounts"]) app.include_router(category_router, prefix="/categories", tags=["categories"]) oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token") if __name__ == '__main__': import uvicorn uvicorn.run("main:app", host='0.0.0.0', port=8000, reload=True)