import { env } from "@/config/env";

export interface DnsRecord {
  type: "CNAME" | "MX" | "TXT";
  name: string;
  value: string;
  priority?: number;
  description: string;
}

interface BuildDnsRecordsInput {
  domain: string;
  dkimTokens: string[];
  mailFromDomain: string;
}

/** Monta os registros DNS reais que o cliente precisa cadastrar, a partir dos tokens
 * DKIM retornados pelo SES (`CreateEmailIdentity`) e do subdomínio MAIL FROM configurado. */
export function buildDnsRecords({
  domain,
  dkimTokens,
  mailFromDomain,
}: BuildDnsRecordsInput): DnsRecord[] {
  const region = env.awsRegion || "us-east-1";

  const dkimRecords: DnsRecord[] = dkimTokens.map((token) => ({
    type: "CNAME",
    name: `${token}._domainkey.${domain}`,
    value: `${token}.dkim.amazonses.com`,
    description: "Assinatura digital DKIM — autentica que o e-mail foi enviado por você",
  }));

  return [
    ...dkimRecords,
    {
      type: "MX",
      name: mailFromDomain,
      value: `feedback-smtp.${region}.amazonses.com`,
      priority: 10,
      description: "MAIL FROM customizado — necessário para recebimento de bounces/feedback",
    },
    {
      type: "TXT",
      name: mailFromDomain,
      value: "v=spf1 include:amazonses.com ~all",
      description: "SPF — autoriza o SES a enviar em nome deste domínio",
    },
    {
      type: "TXT",
      name: `_dmarc.${domain}`,
      value: "v=DMARC1; p=none;",
      description: "DMARC — política recomendada para monitorar autenticação de e-mails",
    },
  ];
}

