import { create } from "zustand";

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

export interface DomainItem {
  id: string;
  domain: string;
  verificationStatus: "PENDING" | "VERIFIED" | "FAILED";
  createdAt: string;
  dnsRecords: DnsRecord[];
}

interface DomainsState {
  domains: DomainItem[];
  selectedDomainId: string | null;
  setDomains: (domains: DomainItem[]) => void;
  addDomain: (domain: DomainItem) => void;
  removeDomain: (id: string) => void;
  updateDomain: (domain: DomainItem) => void;
  setSelectedDomainId: (id: string | null) => void;
}

export const useDomainsStore = create<DomainsState>((set) => ({
  domains: [],
  selectedDomainId: null,

  setDomains: (domains) => set({ domains }),
  addDomain: (domain) => set((state) => ({ domains: [domain, ...state.domains] })),
  removeDomain: (id) =>
    set((state) => ({
      domains: state.domains.filter((d) => d.id !== id),
      selectedDomainId: state.selectedDomainId === id ? null : state.selectedDomainId,
    })),
  updateDomain: (domain) =>
    set((state) => ({
      domains: state.domains.map((d) => (d.id === domain.id ? domain : d)),
    })),
  setSelectedDomainId: (selectedDomainId) => set({ selectedDomainId }),
}));
