Skip to content

REF-901-05: Cloudflare D1/R2 Integration

ADR: ADR-901 — IntegrationsEscopo: D1 read-replica edge cache, R2 object storage, sincronização WordPress → Cloudflare, signed URLs


1. D1 — Read-Replica no Edge

O D1 funciona como cache de leitura para dados frequentemente acessados pelo portal NextJS. O plugin é responsável pelo lado WordPress da sincronização com Cloudflare. Workers, D1 e R2 são infraestrutura externa gerenciada fora do plugin.

Dado CacheadoFonte no PluginAtualização
Organizações (perfil)OrganizationServiceWebhook near-RT
Licenças (status)LicenseServiceWebhook near-RT
Catálogo de produtosWC ProductsCron periódico
Metadados de pluginsDownloadServiceCron periódico

Sincronização WordPress → D1

  • Webhooks (near real-time): Plugin dispara webhook para endpoint Workers quando dados relevantes mudam (Organization atualizada, License ativada, Order criado). Implementado via do_action('middag_cloudflare_sync', $entity, $event).
  • Cron (reconciliação): Job periódico via wp_schedule_event sincroniza lotes para garantir consistência — captura mudanças que webhooks possam ter perdido.
  • Consistência eventual aceitável para contexto do portal. Operações críticas consultam plugin diretamente via API v1.

2. R2 — Object Storage

BucketConteúdoGerenciado Por
middag-pluginsZips de plugins WordPress versionadosCI/CD + Plugin
middag-documentsContratos, PDFs de faturas, termosPlugin
middag-app-cacheCache ISR do NextJSWorkers

Signed URLs

Plugin gera URLs temporárias (pre-signed) para downloads autorizados de R2. Validação de licença ocorre no plugin antes de gerar a URL.

Upload

Plugin faz upload de documentos (contratos, PDFs de faturas) para R2 via API S3-compatible.

Cache Invalidation

Quando produto ou documento é atualizado no plugin, dispara invalidação no D1 e purge no cache Workers via API Cloudflare.