Transformation modules C API
This is the additional API documentation for mg_procedure.h that contains declarations of all functions that can be used to implement a transformation. The source file can be found in the Memgraph installation directory, under include/memgraph. On the standard Debian installation, this will be under /usr/include/memgraph.
caution
NOTE: This part of the documentation is still under development. An updated version will soon be available.
Types​
| Name | |
|---|---|
| typedef void (*)(const struct mgp_messages *, const struct mgp_graph *, struct mgp_result *, struct mgp_memory *); | mgp_trans_cb Entry-point for a transformation with a fixed result type |
Each record of the result must contain the following fields:
- the
queryfield with a Cypher query as a string that will be executed against the database - the
parametersfield with the optional query parameters as a nullable map
Functions​
| Name | |
|---|---|
| size_t | mgp_messages_size(const struct mgp_messages *messages) Get the number of messages contained in the messages list. |
| const struct mgp_message * | mgp_messages_at(const struct mgp_messages *messages, size_t idx) Get the mgp_message at index idx. |
| size_t | mgp_message_payload_size(const struct mgp_message *message) Get the payload size of message. |
| const char * | mgp_message_payload(const struct mgp_message *message) Get the payload of messages as a byte array. |
| const char * | mgp_message_topic_name(const struct mgp_message *message) Get the topic name of message. |
| size_t | mgp_message_key_size(const struct mgp_message *message) Get key size of message. |
| const char * | mgp_message_key(const struct mgp_message *message) Get key of message as a byte array. |
| int64_t | mgp_message(const struct mgp_message *message) Get the timestamp of message. |
| int | mgp_module_add_transformation(struct mgp_module *module, const char *name, mgp_trans_cb cb) Registers a transformation to a module |
Types Documentation​
typedef mgp_trans_cb​
typedef void(* mgp_trans_cb) (const struct mgp_messages *, const struct mgp_graph *, struct mgp_result *, struct mgp_memory *);
Entry-point for a transformation invoked through a stream.
Passed in arguments will not live longer than the callback's execution. Therefore,
you must not store them globally or use the passed in mgp_memory to allocate global resources.
The result type of transformation is fixed.
Functions Documentation​
function mgp_messages_size​
size_t mgp_messages_size(
const struct mgp_messages* messages
)
Returns the total number of messages contained in the argument messages.
function mgp_messages_at​
mgp_message* mgp_messages_at(
const struct mgp_messages* messages,
size_t idx
)
Accessor function that returns the underlying message stored at index idx in messages.
The index supplied must reside in the half-open interval [0, mgp_messages_size(messages)).
function mgp_message_payload_size​
size_t mgp_message_payload_size
const struct mgp_message* message
)
Returns the payload size of the argument message.
function mgp_message_payload​
const char * mgp_message_payload(
const struct mgp_message* message
)
Returns the payload of the argument message as a byte array with size mgp_message_payload_size(message).
function mgp_message_topic_name​
const char * mgp_message_topic_name(
const struct mgp_message* message
)
Returns topic name of the argument message. Topic name is NULL terminated.
function mgp_message_key_size​
size_t mgp_message_key_size(
const struct mgp_message* message
)
Returns the key size of argument message.
function mgp_message_key​
const char * mgp_message_key(
const struct mgp_message* message
)
Returns the key of the argument message as a byte array with size mgp_message_key_size(message).
function mgp_message_timestamp​
int64_t mgp_timestamp(
const struct mgp_message* message
)
Returns the timestamp of the argument message.
function mgp_module_add_transformation​
int mgp_module_add_transformation(
struct mgp_module *module,
const char *name,
mgp_trans_cb cb
)
Register a transformation to a module. The name must be a sequence of digits, underscores,
lowercase, and uppercase Latin letters. The name must begin with a non-digit character.
Note that Unicode characters are not allowed. Additionally, the name is case-sensitive.
Return non-zero if the transformation is added successfully. Registering might
fail if unable to allocate memory for the transformation; if name is not
valid, or a transformation with the same name was already registered or if any
other unexpected failure happens.