This package provides components required to sync indexed data to a MongoDB instance in Flair indexer.
-
Make sure you have created your indexing cluster as described in Getting Started.
-
Install the MongoDB solution package:
pnpm install @flair-sdk/solution-database-mongodb
- Define your schemas based on your entities. For example, if you have a
Swap
entity, you can define a schema as follows:
# ./src/schemas/Swap.yml
---
Swap:
entityId: STRING
entityUpdatedAt: INT64
chainId: INT64
poolAddress: STRING
from: STRING
to: STRING
amount: INT256
amountUSD: DOUBLE
someObjectOrArray: STRING # all json stringified objects or arrays will be automatically stored as acttual nested documents/arrays in mongo
- Add the MongoDB solution to your manifest.yml.mustache usually created from starter-boilerplate repository:
# ./manifest.yml.mustache
# ...
solutions:
- source: '@flair-sdk/solution-database-mongodb'
config:
schema:
- src/schemas/*.yml
connectionUri: '{{{ mongoUri }}}'
databaseName: flair
The "mongoUri" here is a variable that is replaced by mustache locally. Refer to boilerplate repo for more details.
- Add
mongoUri
to your config.json usually created from starter-boilerplate repository:
// ./config.prod.json
{
"cluster": "prod",
"namespace": "my-project",
// ...
"mongoUri": "{{ secret(\"mongodb.uri\") }}"
}
The "mongodb.uri" 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