|
|
import uvicorn |
|
|
from fastapi import FastAPI |
|
|
from fastapi.middleware.cors import CORSMiddleware |
|
|
|
|
|
from app.db import close_mongo, connect_to_mongo |
|
|
from app.routes.budget import router as budget_router |
|
|
from app.scheduler import BudgetScheduler |
|
|
|
|
|
app = FastAPI(title="Early Overspending Alerts") |
|
|
app.add_middleware( |
|
|
CORSMiddleware, |
|
|
allow_origins=["*"], |
|
|
allow_credentials=True, |
|
|
allow_methods=["*"], |
|
|
allow_headers=["*"], |
|
|
) |
|
|
|
|
|
scheduler = BudgetScheduler() |
|
|
|
|
|
|
|
|
@app.on_event("startup") |
|
|
async def startup_event(): |
|
|
db = await connect_to_mongo() |
|
|
app.state.db = db |
|
|
scheduler.start(db) |
|
|
print("Budget scheduler running every 10 seconds") |
|
|
|
|
|
|
|
|
@app.on_event("shutdown") |
|
|
async def shutdown_event(): |
|
|
scheduler.shutdown() |
|
|
await close_mongo() |
|
|
|
|
|
|
|
|
app.include_router(budget_router) |
|
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
|
uvicorn.run("app.main:app", host="0.0.0.0", port=7860, reload=False) |
|
|
|