@mytec: 1.1iter ready for testing
This commit is contained in:
83
backend/app/api/routes/projects.py
Normal file
83
backend/app/api/routes/projects.py
Normal file
@@ -0,0 +1,83 @@
|
||||
from fastapi import APIRouter, Depends, HTTPException
|
||||
from datetime import datetime
|
||||
|
||||
from app.api.deps import get_db
|
||||
from app.models.project import Project, CoverageSettings
|
||||
from app.models.site import Site
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
@router.get("/current")
|
||||
async def get_current_project(db=Depends(get_db)):
|
||||
"""Get the global project."""
|
||||
project = await db.projects.find_one({"name": "global"})
|
||||
if not project:
|
||||
default = Project(name="global")
|
||||
result = await db.projects.insert_one(default.model_dump())
|
||||
return default.model_dump()
|
||||
project.pop("_id", None)
|
||||
return project
|
||||
|
||||
|
||||
@router.put("/current")
|
||||
async def update_current_project(project: Project, db=Depends(get_db)):
|
||||
"""Update the global project."""
|
||||
project.updated_at = datetime.utcnow()
|
||||
data = project.model_dump()
|
||||
await db.projects.update_one(
|
||||
{"name": "global"},
|
||||
{"$set": data},
|
||||
upsert=True,
|
||||
)
|
||||
return data
|
||||
|
||||
|
||||
@router.get("/current/sites")
|
||||
async def get_sites(db=Depends(get_db)):
|
||||
"""Get all sites from the global project."""
|
||||
project = await db.projects.find_one({"name": "global"})
|
||||
if not project:
|
||||
return []
|
||||
return project.get("sites", [])
|
||||
|
||||
|
||||
@router.put("/current/sites")
|
||||
async def update_sites(sites: list[Site], db=Depends(get_db)):
|
||||
"""Update all sites in the global project."""
|
||||
await db.projects.update_one(
|
||||
{"name": "global"},
|
||||
{
|
||||
"$set": {
|
||||
"sites": [s.model_dump() for s in sites],
|
||||
"updated_at": datetime.utcnow(),
|
||||
}
|
||||
},
|
||||
upsert=True,
|
||||
)
|
||||
return {"updated": len(sites)}
|
||||
|
||||
|
||||
@router.get("/current/settings")
|
||||
async def get_settings(db=Depends(get_db)):
|
||||
"""Get coverage settings."""
|
||||
project = await db.projects.find_one({"name": "global"})
|
||||
if not project:
|
||||
return CoverageSettings().model_dump()
|
||||
return project.get("settings", CoverageSettings().model_dump())
|
||||
|
||||
|
||||
@router.put("/current/settings")
|
||||
async def update_settings(settings: CoverageSettings, db=Depends(get_db)):
|
||||
"""Update coverage settings."""
|
||||
await db.projects.update_one(
|
||||
{"name": "global"},
|
||||
{
|
||||
"$set": {
|
||||
"settings": settings.model_dump(),
|
||||
"updated_at": datetime.utcnow(),
|
||||
}
|
||||
},
|
||||
upsert=True,
|
||||
)
|
||||
return settings.model_dump()
|
||||
Reference in New Issue
Block a user