Pacote: dodo-sync no npm | Código-fonte: GitHub
O que você pode sincronizar?
Escolha qualquer combinação destas entidades:Payments
Customers
Subscriptions
Licenses
scopes. Cada execução busca todos os registros nos escopos selecionados e os grava pelo ID, portanto as linhas existentes são atualizadas no local em vez de duplicadas. Cada página de registros é gravada no seu banco de dados em um único lote.
Suporte a Banco de Dados
Dodo Sync é compatível com MongoDB, PostgreSQL, MySQL 8.0.20 ou posterior e ClickHouse. O suporte para Snowflake e outros bancos de dados, pipelines de ETL e sincronização em tempo real está em desenvolvimento. Para contribuir com uma nova integração de banco de dados, envie um pull request para o repositório no GitHub.Primeiros passos
Use o Dodo Sync por meio do CLI para uma configuração rápida ou de forma programática no seu código para integrá-lo ao seu aplicativo. Ambos os métodos oferecem a mesma funcionalidade.Usando o CLI
Instale o CLI globalmente para executá-lo de qualquer lugar:Executando o CLI
O CLI oferece dois modos: interativo, para uma configuração guiada, e manual, para configuração direta. Modo interativo: execute sem argumentos para iniciar o assistente de configuração.Argumentos do CLI
number
obrigatório
Intervalo de sincronização em segundos. O CLI é executado continuamente nesse intervalo. Para uma sincronização única, use
.run() no seu código.string
obrigatório
Tipo de banco de dados:
"mongodb", "postgres", "mysql" ou "clickhouse".string
obrigatório
URI de conexão do seu banco de dados:
- MongoDB:
mongodb://localhost:27017oumongodb+srv://user:pass@cluster.mongodb.net/ - PostgreSQL:
postgresql://user:password@localhost:5432/mydb - MySQL:
mysql://user:password@localhost:3306/mydb - ClickHouse:
http://localhost:8123
string
obrigatório
Lista de entidades separadas por vírgulas para sincronizar:
licences, payments, customers, subscriptions. Exemplo: "payments,customers".string
obrigatório
Sua chave de API do Dodo Payments em Developer → API Keys. Use uma chave do mesmo modo que
--env.string
obrigatório
Ambiente:
"live_mode" ou "test_mode".number
Limite de taxa em solicitações por segundo. Controla a velocidade com que o mecanismo de sincronização faz solicitações de API. O padrão é
10; valores de 100 ou superiores desativam a limitação.Usando no seu código
Integre o recurso de sincronização diretamente ao seu aplicativo. Instale-o como uma dependência:Sincronização automática (baseada em intervalo)
Execute a sincronização continuamente em intervalos regulares:Sincronização manual
Acione operações de sincronização sob demanda, por exemplo, a partir de um cron job, um endpoint de API ou uma função serverless:Executando em Serverless
No Vercel, AWS Lambda ou plataformas semelhantes:- Chame
.disconnect()em um blocofinally, como no exemplo acima, para que as conexões não permaneçam abertas entre as invocações. - Use o runtime do Node.js. Runtimes Edge não podem abrir conexões com o banco de dados.
- Aumente o timeout da função. Uma sincronização grande pode levar mais tempo do que o limite padrão. No Vercel, defina
export const maxDuration = 60;. - Sincronize menos escopos por invocação, como
scopes: ['payments'], para manter cada execução curta.
Exemplo de PostgreSQL
Exemplo de MySQL
Exemplo de ClickHouse
Opções do Construtor
string
obrigatório
Tipo de banco de dados:
"mongodb", "postgres", "mysql" ou "clickhouse".string
obrigatório
String de conexão do seu banco de dados:
- MongoDB:
mongodb://localhost:27017oumongodb+srv://... - PostgreSQL:
postgresql://user:password@localhost:5432/mydb - MySQL:
mysql://user:password@localhost:3306/mydb - ClickHouse:
http://localhost:8123
string[]
obrigatório
Array de entidades a sincronizar:
"licences", "payments", "customers", "subscriptions". Inclua qualquer combinação.object
obrigatório
Configuração da API do Dodo Payments. Consulte os tipos do SDK do TypeScript para ver todas as opções.Propriedades obrigatórias:
bearerToken: sua chave de API do Dodo Paymentsenvironment:"test_mode"ou"live_mode"
number
Tempo, em segundos, entre sincronizações automáticas. Obrigatório para
.start(), opcional para .run().number
Limite de taxa em solicitações por segundo. O padrão é
10; valores de 100 ou superiores desativam o controle de taxa.Informações importantes
Atualização da versão 0.x
A versão 1.0 altera a forma como os dados do MongoDB são armazenados e aumenta o requisito do MySQL. Antes de fazer a atualização:- MongoDB: Exclua sua collection
licencesexistente. Os documentos de licença agora são armazenados peloidda licença em vez desubscription_id, e a próxima sincronização repopulará a collection. - MongoDB: Verifique sua URI de conexão. Os dados agora são gravados no banco de dados indicado pela URI, e não sempre em
dodopayments_sync. Para continuar usando seus dados existentes, incluadodopayments_syncna URI ou não informe o banco de dados. - MySQL: Atualize para MySQL 8.0.20 ou posterior.