Skip to content

Latest commit

 

History

History
216 lines (142 loc) · 6.36 KB

helpers.md

File metadata and controls

216 lines (142 loc) · 6.36 KB

Submodule helpers Lua API

Submodule helpers.lua is a part of GraphQL API module provides common API for different so called "helpers".

Lua API

update_schema()

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.

on_update_schema()

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)

update_config()

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 including is_master flag.

on_update_config()

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)

stop()

helpers.stop() - method is used to fire all helpers registered stop triggers.

on_stop()

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)

add_shared()

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')

remove_shared()

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')

is_shared()

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

clean_shared()

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')