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.

hello_client/src/app/plugins/hello_info/types.ts
// [...]

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.

hello_client/src/app/plugins/hello_info/schemas.ts
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.

hello_client/config/custom_config.json
// [...]
"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.