Skip to content

Integração Cloudflare

O MIDDAG Account utiliza Cloudflare D1 e R2 como serviços de infraestrutura. O D1 fornece um banco de dados réplica de leitura na edge para o portal do cliente. O R2 fornece armazenamento de objetos para ZIPs de plugins, documentos e outros arquivos. Workers, D1 e R2 são infraestrutura externa gerenciada fora do plugin -- o plugin lida com o lado WordPress da sincronização.

Configuração

Token de API

O plugin comunica-se com o Cloudflare usando um token de API com permissões para D1 e R2. Configure-o como variável de ambiente:

VariávelDescrição
CLOUDFLARE_API_TOKENToken de API do Cloudflare
CLOUDFLARE_ACCOUNT_IDID da conta Cloudflare

O token deve ter as permissões mínimas necessárias: leitura/escrita no D1 e leitura/escrita de objetos no R2.

D1 -- Banco de dados na edge

O D1 atua como cache de réplica de leitura para dados que o portal do cliente (NextJS) acessa com frequência. O plugin WordPress é a fonte da verdade; o D1 é uma camada de desempenho.

O que é armazenado em cache

DadoOrigem no pluginMétodo de atualização
Perfis de organizaçãoOrganizationServiceWebhook (quase em tempo real)
Status de licençasLicenseServiceWebhook (quase em tempo real)
Catálogo de produtosWooCommerceCron (periódico)
Metadados de pluginsDownloadServiceCron (periódico)

Sincronização

Dois mecanismos mantêm o D1 sincronizado:

  1. Webhooks (quase em tempo real): Quando dados relevantes mudam (organização atualizada, licença ativada, pedido criado), o plugin dispara um webhook para um endpoint Cloudflare Workers via do_action('middag_cloudflare_sync', $entity, $event).

  2. Cron (reconciliação): Um job WP-Cron periódico sincroniza dados em lotes para capturar quaisquer alterações que os webhooks possam ter perdido.

Consistência eventual é aceitável para o portal. Operações críticas (válidação de licença, processamento de pagamento) sempre consultam a REST API do plugin diretamente.

Invalidação de cache

Quando um produto ou documento é atualizado, o plugin aciona a invalidação no D1 e purga o cache dos Workers via API do Cloudflare.

R2 -- Armazenamento de objetos

O R2 fornece armazenamento de objetos compatível com S3. O plugin o utiliza para distribuição de arquivos e gerenciamento de documentos.

Buckets

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

URLs assinadas

O plugin gera URLs temporárias pré-assinadas para downloads autorizados do R2. Antes de gerar uma URL, o plugin válida o status da licença ou entitlement do solicitante. As URLs expiram após um período configurável.

Uploads

O plugin faz upload de documentos (contratos, PDFs de faturas) para o R2 usando a API compatível com S3. Isso acontece automaticamente quando um documento é gerado ou vinculado a um entitlement.

Arquitetura

O plugin lida apenas com dados de saída. Ele envia dados para o D1 e R2, e invalida caches. Ele não recebe dados de entrada do Cloudflare.