Configuring a Plugin
The HelloInfoPlugin should sync on-chain events data with the off-chain database after a configured time interval.
On this page, you’ll learn:
-
Defining configuration for a plugin.
-
Overwriting default configuration.
| The relevant files discussed in this guide are schemas.ts, types.ts, and custom_config.json. |
1. Defining a sync interval configuration
A plugin is capable of having its own set of configurations, and since we aim for our plugin to sync with on-chain data at specific intervals, having a config will be beneficial.
We will use a syncInterval variable in our HelloInfoPlugin class so, let’s define that in the types.ts file.
// [...]
export interface HelloInfoPluginConfig {
syncInterval: number;
}
After that, Open the schemas.ts file and define configSchema there.
It will have an integer-type property: syncInterval.
It’s essential to define a default value to the syncInterval in milliseconds as well.
export const configSchema = {
$id: '/plugins/helloInfo/config',
type: 'object',
properties: {
syncInterval: {
type: 'integer',
},
},
required: ['syncInterval'],
default: {
syncInterval: 120000, // milliseconds
},
};
2. Overwrite default sync interval
The aforementioned type and schema definition are enough for our plugin to function, however, there may be an optional case where a node operator wants to increase or decrease the time of sync interval so, for that, they can add it in the custom_config.json file under the plugins property.
If a value is available in the custom_config.json for the syncInterval, the plugin will automatically consider that value and overwrite the default value for interval synchronization.
// [...]
"plugins": {
"helloInfo": {
"syncInterval": 60000
}
}
Now that we have added Plugin’s configuration, it’s time to update the HelloInfoPlugin class as described in the next guide.