Package : dodo-sync sur npm | Source : GitHub
Que pouvez-vous synchroniser ?
Choisissez n’importe quelle combinaison de ces entités :Payments
Customers
Subscriptions
Licenses
scopes. Chaque exécution récupère chaque enregistrement dans les périmètres sélectionnés et l’écrit en utilisant son ID. Les lignes existantes sont ainsi mises à jour sur place au lieu d’être dupliquées. Chaque page d’enregistrements est écrite dans votre base de données en un seul lot.
Bases de données prises en charge
Dodo Sync prend en charge MongoDB, PostgreSQL, MySQL 8.0.20 ou version ultérieure, ainsi que ClickHouse. La prise en charge de Snowflake et d’autres bases de données, des pipelines ETL et de la synchronisation en temps réel est en cours de développement. Pour contribuer à une nouvelle intégration de base de données, envoyez une pull request au dépôt GitHub.Premiers pas
Utilisez Dodo Sync via la CLI pour une configuration rapide ou directement dans votre code pour l’intégrer à votre application. Les deux méthodes offrent les mêmes fonctionnalités.Utilisation de la CLI
Installez la CLI globalement pour pouvoir l’exécuter depuis n’importe quel emplacement :Exécution de la CLI
La CLI prend en charge deux modes : interactif pour une configuration guidée et manuel pour une configuration directe. Mode interactif : exécutez la CLI sans arguments pour démarrer l’assistant de configuration.Arguments de la CLI
number
requis
Intervalle de synchronisation en secondes. La CLI s’exécute en continu selon cet intervalle. Pour une synchronisation ponctuelle, utilisez
.run() dans votre code.string
requis
Type de base de données :
"mongodb", "postgres", "mysql" ou "clickhouse".string
requis
URI de connexion à votre base de données :
- 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
requis
Liste séparée par des virgules des entités à synchroniser :
licences, payments, customers, subscriptions. Exemple : "payments,customers".string
requis
Votre clé API Dodo Payments issue de Developer → API Keys. Utilisez une clé correspondant au même mode que
--env.string
requis
Environnement :
"live_mode" ou "test_mode".number
Limite de débit en requêtes par seconde. Contrôle la vitesse à laquelle le moteur de synchronisation effectue les requêtes API. La valeur par défaut est
10 ; les valeurs supérieures ou égales à 100 désactivent la limitation.Utilisation dans votre code
Intégrez directement la fonctionnalité de synchronisation à votre application. Installez-la en tant que dépendance :Synchronisation automatique (basée sur un intervalle)
Exécutez la synchronisation en continu à intervalles réguliers :Synchronisation manuelle
Déclenchez des opérations de synchronisation à la demande, par exemple depuis une tâche cron, un endpoint API ou une fonction serverless :Exécution sur une plateforme serverless
Sur Vercel, AWS Lambda ou des plateformes similaires :- Appelez
.disconnect()dans un blocfinally, comme dans l’exemple ci-dessus, afin que les connexions ne restent pas ouvertes entre les invocations. - Utilisez le runtime Node.js. Les runtimes Edge ne peuvent pas ouvrir de connexions à la base de données.
- Augmentez le délai d’expiration de la fonction. Une synchronisation volumineuse peut prendre plus de temps que la limite par défaut. Sur Vercel, définissez
export const maxDuration = 60;. - Synchronisez moins de périmètres par invocation, par exemple
scopes: ['payments'], afin de garder chaque exécution courte.
Exemple PostgreSQL
Exemple MySQL
Exemple ClickHouse
Options du constructeur
string
requis
Type de base de données :
"mongodb", "postgres", "mysql" ou "clickhouse".string
requis
Chaîne de connexion à votre base de données :
- MongoDB :
mongodb://localhost:27017oumongodb+srv://... - PostgreSQL :
postgresql://user:password@localhost:5432/mydb - MySQL :
mysql://user:password@localhost:3306/mydb - ClickHouse :
http://localhost:8123
string[]
requis
Tableau d’entités à synchroniser :
"licences", "payments", "customers", "subscriptions". Vous pouvez inclure n’importe quelle combinaison.object
requis
Configuration de l’API Dodo Payments. Consultez les types du SDK TypeScript pour connaître toutes les options.Propriétés requises :
bearerToken: votre clé API Dodo Paymentsenvironment:"test_mode"ou"live_mode"
number
Durée, en secondes, entre les synchronisations automatiques. Requise pour
.start(), facultative pour .run().number
Limite de débit en requêtes par seconde. La valeur par défaut est
10 ; les valeurs égales ou supérieures à 100 désactivent la limitation de débit.Informations importantes
Mise à niveau depuis la version 0.x
La version 1.0 modifie la manière dont les données MongoDB sont stockées et augmente la version minimale requise de MySQL. Avant la mise à niveau :- MongoDB : supprimez votre collection
licencesexistante. Les documents de licence sont désormais stockés selonidde la licence au lieu desubscription_id, et la prochaine synchronisation repeuplera la collection. - MongoDB : vérifiez votre URI de connexion. Les données sont désormais écrites dans la base de données indiquée par l’URI, et plus systématiquement dans
dodopayments_sync. Pour continuer à utiliser vos données existantes, ajoutezdodopayments_syncdans l’URI ou omettez la base de données. - MySQL : effectuez la mise à niveau vers MySQL 8.0.20 ou version ultérieure.