from sqlalchemy.orm import Session from app.models.event import Event from app.schemas.list_models import EventSummary from app.services.event_actor_user import extract_event_actor_user from app.services.host_sessions import event_session_terminated from app.services.rdg_display import build_rdg_display from app.services.rdg_session_flap import resolve_rdg_flap_summary def event_to_summary(event: Event, db: Session | None = None) -> EventSummary: host = event.host rdg_flap = False rdg_flap_pair_event_id: int | None = None rdg_flap_qwinsta_event_id: int | None = None if db is not None: rdg_flap, rdg_flap_pair_event_id, rdg_flap_qwinsta_event_id = resolve_rdg_flap_summary( db, event ) title = event.title summary = event.summary rdg_access_path: str | None = None rdg_qwinsta_enabled = False rdg_display = build_rdg_display(event, db) if rdg_display is not None: title = rdg_display.title summary = rdg_display.summary rdg_access_path = rdg_display.access_path rdg_qwinsta_enabled = rdg_display.qwinsta_enabled return EventSummary( id=event.id, event_id=event.event_id, host_id=event.host_id, hostname=host.hostname, display_name=host.display_name, product_version=host.product_version, occurred_at=event.occurred_at, received_at=event.received_at, category=event.category, type=event.type, severity=event.severity, title=title, summary=summary, actor_user=extract_event_actor_user(event.type, event.details), rdg_flap=rdg_flap, rdg_flap_pair_event_id=rdg_flap_pair_event_id, rdg_flap_qwinsta_event_id=rdg_flap_qwinsta_event_id, rdg_access_path=rdg_access_path, rdg_qwinsta_enabled=rdg_qwinsta_enabled, session_terminated=event_session_terminated(event), )