"""High-level read API for the audit log."""

from __future__ import annotations

from django.db.models import QuerySet

from simorgh.apps.audit.models import AuditLog
from simorgh.apps.organizations.services import descendant_ids


def for_resource(tenant_id: int, resource_type: str, resource_id: str | int) -> QuerySet[AuditLog]:
    return AuditLog.objects.filter(
        tenant_id=tenant_id,
        resource_type=resource_type,
        resource_id=str(resource_id),
    )


def for_actor(tenant_id: int, actor_id: int) -> QuerySet[AuditLog]:
    return AuditLog.objects.filter(tenant_id=tenant_id, actor_id=actor_id)


def for_subtree(tenant_id: int, root_node) -> QuerySet[AuditLog]:
    node_ids = descendant_ids([root_node])
    return AuditLog.objects.filter(tenant_id=tenant_id, organization_node_id__in=node_ids)
