feat: Problems API, ingest hook, and UI
This commit is contained in:
@@ -13,6 +13,7 @@ from app.database import get_db
|
||||
from app.models import Event, Host
|
||||
from app.schemas.list_models import EventDetail, EventListResponse, EventSummary
|
||||
from app.services.ingest import ingest_event
|
||||
from app.services.problems import maybe_create_problem
|
||||
from app.services.schema_validate import validate_event_payload
|
||||
|
||||
router = APIRouter(prefix="/events", tags=["events"])
|
||||
@@ -23,6 +24,7 @@ class IngestResponse(BaseModel):
|
||||
event_id: str
|
||||
created: bool
|
||||
sac_event_url: str
|
||||
problem_id: int | None = None
|
||||
|
||||
|
||||
@router.post("", status_code=202, response_model=IngestResponse)
|
||||
@@ -36,6 +38,9 @@ def post_event(
|
||||
raise HTTPException(status_code=422, detail={"schema_errors": errors[:20]})
|
||||
|
||||
event, created = ingest_event(db, payload)
|
||||
problem = None
|
||||
if created:
|
||||
problem = maybe_create_problem(db, event)
|
||||
db.commit()
|
||||
|
||||
settings = get_settings()
|
||||
@@ -45,6 +50,7 @@ def post_event(
|
||||
event_id=event.event_id,
|
||||
created=created,
|
||||
sac_event_url=f"{base}/api/v1/events/{event.id}",
|
||||
problem_id=problem.id if problem else None,
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user