/Fixes #72 /claim #72
This PR adds a new Data Sync Plugin that enables StarbaseDB to replicate data from external databases to the internal SQLite database. The plugin provides a robust, configurable solution for keeping data synchronized across different database systems.
plugins/data_sync/index.ts
- Main plugin implementationplugins/data_sync/index.test.ts
- Test suiteplugins/data_sync/readme.md
- Documentationplugins/data_sync/demo/setup.sql
- Demo database setupplugins/data_sync/demo/test.ts
- Demo implementationplugins/data_sync/demo/wrangler.toml
- Configuration examplevitest.config.ts
- Updated test configurationpackage.json
- Added test scripttsconfig.json
- Updated TypeScript configurationStart a PostgreSQL instance:
docker run --name postgres-db -e POSTGRES_PASSWORD=postgres -p 5432:5432 -d postgres
Configure the plugin in wrangler.toml:
[plugins.data_sync]
sync_interval = 5 # 5 minutes
tables = ["users", "products", "orders"]
batch_size = 100
track_column = "created_at"
enabled = true
Set up environment variables for database credentials:
# PostgreSQL configuration
EXTERNAL_DB_TYPE = "postgresql"
EXTERNAL_DB_HOST = "localhost"
EXTERNAL_DB_PORT = "5432"
EXTERNAL_DB_USER = "postgres"
EXTERNAL_DB_PASS = "postgres"
EXTERNAL_DB_DATABASE = "starbase_demo"
EXTERNAL_DB_DEFAULT_SCHEMA = "public"
Initialize test database:
psql -U postgres -d postgres -c "CREATE DATABASE starbase_demo;"
psql -U postgres -d starbase_demo -f plugins/data_sync/demo/setup.sql
Test synchronization:
npm run test:data-sync
Kunal Darekar
@Kunal-Darekar
Outerbase (YC W23)
@outerbase