import { Domain } from "@prisma/client";
import { DnsRecord } from "../entities/build-dns-records";

export interface UpdateSesIdentityInput {
  dkimRecords: DnsRecord[];
  mailFromDomain: string;
  mailFromMxRecord: string;
  sesIdentityArn?: string;
}

export interface DomainsRepository {
  findById(id: string): Promise<Domain | null>;
  findByUserId(userId: string): Promise<Domain[]>;
  searchByUserId(userId: string, query: string, limit: number): Promise<Domain[]>;
  findByDomainName(domainName: string): Promise<Domain | null>;
  findAllPending(): Promise<Domain[]>;
  create(domain: string, userId: string): Promise<Domain>;
  updateSesIdentity(id: string, data: UpdateSesIdentityInput): Promise<Domain>;
  updateVerificationStatus(
    id: string,
    status: "PENDING" | "VERIFIED" | "FAILED"
  ): Promise<Domain>;
  delete(id: string): Promise<void>;
}
