/**
 * Lean indexed counts for AdminShell system-tab badges (outbox backlog + health unresolved).
 * Runs on every /admin/system/* route so the top strip can show cross-tab incident badges.
 */

import type { DrizzleClient } from '@/server/db/client.js';
import { listOutboxEvents } from '@/server/admin/resources/outbox/queries.js';
import { countUnresolvedFindings } from '@/server/db/queries/system-health.js';

export interface SystemTabBadgeCounts {
  outboxBacklog: number;
  healthUnresolved: number;
}

/** Pending outbox events + unresolved unarmed_entity health findings. */
export async function getSystemTabBadgeCounts(db: DrizzleClient): Promise<SystemTabBadgeCounts> {
  const [outboxPending, healthUnresolved] = await Promise.all([
    listOutboxEvents(db, { limit: 1, offset: 0, status: 'pending' }),
    countUnresolvedFindings(db),
  ]);

  return {
    outboxBacklog: outboxPending.total,
    healthUnresolved,
  };
}
