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_master
flag.
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')
end
helpers.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')