Crate rsmgp_sys[][src]

Expand description

A library to simplify implementation of Memgraph Query Modules.

Example

use c_str_macro::c_str;
// All possible rsmgp modules (probably not all will be required).
use rsmgp_sys::edge::*;
use rsmgp_sys::list::*;
use rsmgp_sys::map::*;
use rsmgp_sys::memgraph::*;
use rsmgp_sys::mgp::*;
use rsmgp_sys::path::*;
use rsmgp_sys::property::*;
use rsmgp_sys::result::*;
use rsmgp_sys::rsmgp::*;
use rsmgp_sys::value::*;
use rsmgp_sys::vertex::*;
use rsmgp_sys::{close_module, define_procedure, define_type, init_module};
// The following are required because of used macros.
use std::ffi::CString;
use std::os::raw::c_int;
use std::panic;

init_module!(|memgraph: &Memgraph| -> MgpResult<()> {
    memgraph.add_read_procedure(
        basic, // Has to be the same as specified in the `define_procedure!`.
        c_str!("basic"), // Name under which Memgraph will register the procedure.
        &[define_type!("input_string", Type::String)],  // Required arguments.
        &[],                                            // Optional arguments.
        &[define_type!("output_string", Type::String)], // Return fields.
    )?;
    Ok(())
});

define_procedure!(basic, |memgraph: &Memgraph| -> MgpResult<()> {
    let result = memgraph.result_record()?;
    let args = memgraph.args()?;
    let output_string = args.value_at(0)?;
    result.insert_mgp_value(
        c_str!("output_string"),
        &output_string.to_mgp_value(&memgraph)?,
    )?;
    Ok(())
});

close_module!(|| -> MgpResult<()> { Ok(()) });

Modules

edge

All edge (relationship) related.

list

All related to the list datatype.

map

All related to the map (dictionary) datatype.

memgraph

Abstraction to interact with Memgraph.

mgp

Auto-generated bindings (don’t use directly, except top-level pointer data types).

path

All related to a graph path.

property

All related to the property graph property (data key-value pair).

result

Simplifies returning results to Memgraph and then to the client.

rsmgp

Macro definitions and top level data structures.

value

All related to the value (container for any data type).

vertex

All vertex (node) related.

Macros

close_module

Closes Memgraph query module.

define_deprecated_type

Defines a deprecated type.

define_optional_type

Defines an optional type.

define_procedure

Defines a new procedure callable by Memgraph engine.

define_type

Defines a regular type.

init_module

Initializes Memgraph query module.