This package provides components required to sync indexed data to a PostgreSQL instance in Flair indexer.
Make sure you have created your indexing cluster as described in Getting Started.
Install the PostgreSQL solution package:
pnpm install @flair-sdk/solution-database-postgresql- Define your schemas based on your entities. For example, if you have a
Swapentity, you can define a schema as follows:
# ./src/schemas/Swap.yml
---
Swap:
entityId: STRINGentityUpdatedAt: INT64chainId: INT64poolAddress: STRINGfrom: STRINGto: STRINGamount: INT256amountUSD: DOUBLEsomeObjectOrArray: STRING- Add the PostgreSQL solution to your manifest.yml.mustache usually created from starter-boilerplate repository:
# ./manifest.yml.mustache# ...solutions:
- source: '@flair-sdk/solution-database-postgresql'config:
schema:
- src/schemas/*.ymlconnectionUri: 'jdbc:postgresql://PUT_DB_HOST_HERE/PUT_DB_NAME_HERE'username: 'PUT_DB_USERNAME_HERE'password: '{{{ postgresqlPassword }}}'tableNamePrefix: entity_The "postgresqlPassword" here is a variable that is replaced by mustache locally. Refer to boilerplate repo for more details.
- Add
postgresqlPasswordto your config.json usually created from starter-boilerplate repository:
// ./config.prod.json{"cluster": "prod","namespace": "my-project",// ..."postgresqlPassword": "{{ secret(\"postgresql.password\") }}"}The "postgresql.password" is an actual secret value set using flair secret command, so that it is not exposed in the repository.
- Deploy your cluster and check the status of real-time live syncing.
pnpm generate-and-deploy
pnpm flair logs -w -t component=enricher- (OPTIONAL) If there are any historical previously indexed data, you can sync them using:
pnpm flair script database-manual-full-sync