// apps/web/src/server/payments/mock/read-scenario.ts
import { isMockScenario, type MockScenario } from './scenarios.js';

/** Minimal cookie-reader shape — Astro APIContext.cookies satisfies it. */
interface CookieReader {
  get(name: string): { value: string } | undefined;
}

const COOKIE = 'md_mock_scenario';

/**
 * Resolve the active mock scenario at an API request boundary.
 * Returns null under any non-mock PAYMENT_PROVIDER (column stays NULL on real rows).
 * Under 'mock': cookie value if valid, else 'success'.
 */
export function readMockScenario(
  cookies: CookieReader,
  env: { PAYMENT_PROVIDER: 'stripe' | 'mock' },
): MockScenario | null {
  if (env.PAYMENT_PROVIDER !== 'mock') return null;
  const raw = cookies.get(COOKIE)?.value;
  return isMockScenario(raw) ? raw : 'success';
}
