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 Cacheado | Fonte no Plugin | Atualização |
|---|---|---|
| Organizações (perfil) | OrganizationService | Webhook near-RT |
| Licenças (status) | LicenseService | Webhook near-RT |
| Catálogo de produtos | WC Products | Cron periódico |
| Metadados de plugins | DownloadService | Cron 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_eventsincroniza 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
| Bucket | Conteúdo | Gerenciado Por |
|---|---|---|
middag-plugins | Zips de plugins WordPress versionados | CI/CD + Plugin |
middag-documents | Contratos, PDFs de faturas, termos | Plugin |
middag-app-cache | Cache ISR do NextJS | Workers |
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.