Submodule helpers.lua is a part of GraphQL API module provides common API for different so called "helpers".
helpers.update_schema(message) - method is used mostly for internal purposes. This method is called when box.space._space:on_replace trigger fires on any space format changes. Under the hood update_schema() fires all triggers registered by helpers and propagate message contents to all of them,
where:
message(table) - transaction with the following structure:old_space(table) - old tuple map;new_space(table) - new tuple map;operation(string) - 'INSERT', 'DELETE', 'UPDATE', or 'REPLACE'.
For more info about message contents refer to space_object:on_replace(). Note: The main difference message from on_replace() trigger arguments is that old_space and new_space already converted from tuple to map.
helpers.on_update_schema(trigger_new, trigger_old) - method is used to register/unregister schema update triggers by different helpers,
where:
trigger_new(function) - new trigger function to be registered;trigger_old(function) - old trigger function to be replaced or deleted.
Example:
local function trigger1(message)
...
end
local function trigger1(message)
...
end
local helpers = require('helpers')
-- add trigger1()
helpers.on_update_schema(trigger1)
-- replace trigger1() by trigger2()
helpers.on_update_schema(trigger2, trigger1)
-- remove trigger2()
helpers.on_update_schema(trigger2, nil)helpers.update_config(conf, opts) - method is used mostly for internal purposes. This method is called when Cartridge apply_config() fired during Cartridge ConfiguringRoles stage,
where:
-
conf(table) - Cartridge Clusterwide configuration, for more info refer to cartridge.roles.apply-config() -
opts(table) - apply_config() options includingis_masterflag.
helpers.on_update_config(trigger_new, trigger_old) - method is used to register/unregister config update triggers by different helpers,
where:
trigger_new(function) - new trigger function to be registered;trigger_old(function) - old trigger function to be replaced or deleted.
Example:
local function trigger1(message)
...
end
local function trigger1(message)
...
end
local helpers = require('helpers')
-- add trigger1()
helpers.on_update_config(trigger1)
-- replace trigger1() by trigger2()
helpers.on_update_config(trigger2, trigger1)
-- remove trigger2()
helpers.on_update_config(trigger2, nil)helpers.stop() - method is used to fire all helpers registered stop triggers.
helpers.on_stop(trigger_new, trigger_old) - method is used to register/unregister stop triggers by different helpers,
where:
trigger_new(function) - new trigger function to be registered;trigger_old(function) - old trigger function to be replaced or deleted.
Example:
local function trigger1(message)
...
end
local function trigger1(message)
...
end
local helpers = require('helpers')
-- add trigger1()
helpers.on_stop(trigger1)
-- replace trigger1() by trigger2()
helpers.on_stop(trigger2, trigger1)
-- remove trigger2()
helpers.on_stop(trigger2, nil)helpers.add_shared(schema, class, name, helper) - method used to register global shared part of GraphQL schema to guard from removing it if it still used by other helper,
where:
schema(string) - mandatory, schema name registering resource belongs to;class(string) - mandatory, graphql part class, e.g.: 'directive', 'object', 'type', etc.;name(string) - mandatory, graphql part name;helper(string) - mandatory, helper name.
Example:
helpers.add_shared('Default', 'directive', 'timeout', 'data')helpers.remove_shared(schema, class, name, helper) - method used to unregister global shared part of GraphQL schema,
where:
schema(string) - mandatory, schema name registering resource belongs to;class(string) - mandatory, graphql part class, e.g.: 'directive', 'object', 'type', etc.;name(string) - mandatory, graphql part name;helper(string) - mandatory, helper name.
Example:
helpers.remove_shared('Default', 'directive', 'timeout', 'data')helpers.is_shared(schema, class, name, helper) - method used to check if global shared part of GraphQL schema is used by any other helper,
where:
schema(string) - mandatory, schema name registering resource belongs to;class(string) - mandatory, graphql part class, e.g.: 'directive', 'object', 'type', etc.;name(string) - mandatory, graphql part name;helper(string) - mandatory, helper name;
returns:
[1] (boolean) - true - resource is also used by other helper(s), false - not used and may be deleted.
Example:
if not helpers.is_shared('Default', 'directive', 'timeout', 'data') then
types.remove_directive('timeout', 'Default')
endhelpers.clean_shared(schema, class) - method used to check remove sharing info for schema or schema and class,
where:
schema(string) - mandatory, schema name registering resource belongs to;class(string) - optional, graphql part class, e.g.: 'directive', 'object', 'type', etc.
Example:
-- Unregister all shared parts for 'Space' schema
helpers.clean_shared('Spaces')
-- Unregister all shared directives for 'Default' schema
helpers.clean_shared('Default')