| from fastapi import FastAPI |
| from fastapi.middleware.cors import CORSMiddleware |
| from contextlib import asynccontextmanager |
| import asyncio |
|
|
| from backend.core.database import connect_to_mongo, close_mongo_connection |
| from backend.core.config import settings |
| from backend.worker.scheduler import run_scheduler |
| from backend.worker.telegram_bot import run_bot, send_sys_log |
|
|
| |
| from backend.api.auth_routes import router as auth_router |
| from backend.api.hf_routes import router as hf_router |
| from backend.api.cron_routes import router as cron_router |
| from backend.api.admin_routes import router as admin_router |
|
|
| @asynccontextmanager |
| async def lifespan(app: FastAPI): |
| |
| await connect_to_mongo() |
| asyncio.create_task(run_scheduler()) |
| asyncio.create_task(run_bot()) |
| yield |
| |
| await send_sys_log("๐ **System Shutting Down / Restarting.**") |
| await close_mongo_connection() |
|
|
| app = FastAPI( |
| title=settings.PROJECT_NAME, |
| description="SaaS PWA for managing Hugging Face Spaces and Cron Jobs", |
| version="1.0.0", |
| lifespan=lifespan |
| ) |
|
|
| |
| app.add_middleware( |
| CORSMiddleware, |
| allow_origins=["*"], |
| allow_credentials=True, |
| allow_methods=["*"], |
| allow_headers=["*"], |
| ) |
|
|
| @app.get("/") |
| async def root(): |
| return {"message": "Welcome to HF Cron Manager Pro API"} |
|
|
| |
| app.include_router(auth_router) |
| app.include_router(hf_router) |
| app.include_router(cron_router) |
| app.include_router(admin_router) |
|
|