import type { DrizzleClient } from '@/server/db/client.js';
import { incrementDeadLetter } from '@/server/db/queries/dlq-events.js';
import { redactError } from './redact.js';

/**
 * Record a dead-lettered message against its DLQ counter. Call from a DLQ-receipt
 * consumer (CF-native dead-lettering: outbox/llm/settlements) OR from a consumer's
 * terminal-failure path (translation, which self-manages retry and never routes to
 * its CF DLQ). Never throws — a counter-write failure must not block the queue ack.
 */
export async function recordDeadLetter(
  db: DrizzleClient,
  queueKey: string,
  reason: string,
): Promise<void> {
  try {
    await incrementDeadLetter(db, queueKey, reason, new Date());
  } catch (err) {
    console.error(
      '[recordDeadLetter] counter write failed',
      queueKey,
      redactError(err, 'counter write failed'),
    );
  }
}
