@gatsby-cloud-pkg/merlin-synchronizer
v0.5.2
Published
Synchronizes a gatsby site's data layer with a remote source hosted on GCP
Downloads
39
Keywords
Readme
Merlin Synchronizer
The synchronizer is responsible for pulling data from a Merlin ledger in GCS via the Gatsby Cloud Ledger API. It can sync all data in a ledger or just the data since the last time it synchronized.
It synchronizes Merlin ledger redux actions for a specific Gatsby Cloud site ID and a specific Gatsby site path local to the process calling synchronize. It handles its own caching via a provided cache function with get and set methods. It returns a promise that's resolved when all actions are synced or its determined that the synchronizer can be invoked in any follower when they need to sync data from Cloud.
Usage
import { synchronize } from "@gatsby-cloud-pkg/merlin-synchronizer"
const { ledgerExists } = await synchronize({
siteId, // should be a site ID for a Gatsby Cloud site
gatsbySitePath, // should be an absolute path to a Gatsby site on disk
cache, // needs cache.get and cache.set methods
// sourcingConfigurationId, <-- this is optional. a sourcingConfigurationId will be computed from the Gatsby site at the gatsbySitePath. But you can pass this directly too
handleAction: (action) => {
// do stuff with this action
// it's a Gatsby core redux action which was emitted in Merlin and stored in GCS
},
})import { computeSourcingConfigurationId } from "@gatsby-cloud-pkg/merlin-synchronizer"
// ...
const sourcingConfigurationId = await computeSourcingConfigurationId(
pathToGatsbySite
)Development
You must have previously written a ledger to disk. You can do this by running yarn:start:local in services/cloud-sourcerer in the mansion repo. You may need to set environment variables for the site you are using to generate the ledger.
- Run
dev-monolithwithyarn:start:localinservices/dev-monolith - Create an
envfile with theSITE_IDyou used to generate the ledger and the correct port for the API, e.g.GATSBY_CLOUD_DATALAYER=http://localhost:8201/get-ledger-entriesif not using8083 - Run
yarn run:localin themerlin-synchronizerdirectory.
