import type { CollectionAfterChangeHook } from 'payload'
import { invalidateTenantEmailCache } from '../lib/email/tenant-email-service'

/**
 * Hook: Invalidiert den E-Mail-Transporter-Cache wenn sich die
 * E-Mail-Konfiguration eines Tenants ändert.
 */
export const invalidateEmailCacheHook: CollectionAfterChangeHook = async ({
  doc,
  previousDoc,
  operation,
}) => {
  if (operation === 'update') {
    // Prüfen ob sich die E-Mail-Konfiguration geändert hat
    const emailChanged = JSON.stringify(doc.email) !== JSON.stringify(previousDoc?.email)

    if (emailChanged) {
      invalidateTenantEmailCache(doc.id)
      console.log(`[Email] Cache invalidated for tenant ${doc.slug}`)
    }
  }

  return doc
}
