"""Append-only audit events for project authorization mutations (Workstream F)."""

from __future__ import annotations

from uuid import UUID, uuid4

from sqlalchemy.ext.asyncio import AsyncSession

from src.domain.project_auth.models import ProjectAuthAuditEvent


async def record_event(
    db: AsyncSession,
    *,
    project_id: UUID,
    event: str,
    actor_membership_id: UUID | None,
    target_membership_id: UUID | None,
    payload: dict,
    correlation_id: str | None,
) -> None:
    db.add(
        ProjectAuthAuditEvent(
            id=uuid4(),
            project_id=project_id,
            event=event,
            actor_membership_id=actor_membership_id,
            target_membership_id=target_membership_id,
            payload=payload,
            correlation_id=correlation_id,
        )
    )
    await db.flush()
