OrientDB Database Interface for Erlang

Tested on OrientDB version 2.2.x.

Connect without database

{ok, C} = odi:connect(Host, Username, Password, Opts).

Parameters:

Example:

{ok, C} = odi:connect("127.0.0.1", "server_user", "server_password", []).

Connect to database

odi:db_open(Host, Database, Username, Password, []).

Parameters:

Returns:

{{[{ClusterName, Id, Type}], DistributedConfig}, C}

Example:

{{ClustersList, null}, C} = odi:db_open("127.0.0.1", "demo", "admin", "admin", []).

Disconnect

odi:close(C).

Syncronous SQL Query

odi:query_sync(C, QueryText, Limit).

Parameters:

Returns:

[{RID, RecordType, RecordVersion, RecordContent}]

Example:

[{{22,0},document,1,{<<"City">>,[{<<"name">>,<<"Rome">>},{<<"country">>,{link,{23,0}}}]}}] =
odi:query_sync(C, "SELECT FROM City WHERE name=\"Rome\"", 1).

Add record

odi:record_create(C, ClusterId, {Class, Fields}, RecordType, Mode).

Parameters:

Returns:

Example:

Position = odi:record_create(C, 0, {"Country", #{name => "Japan"}}, document, sync).

Update record

odi:record_update(C, RID, UpdateContent, RecordContent, RecordVersion, RecordType, Mode).

Returns:

Example:

odi:record_update(C,{23,171}, true, {<<"Country">>, [{<<"name">>, <<"Japan">>}]},6, document,sync).

Load record

odi:record_load(C, RID, FetchPlan, IgnoreCache).

Parameters:

Returns:

[{IsResultSetBool, RecordType, RecordVersion, Class, Data}]

Example:

odi:record_load(C,{22,1},default, false).

Delete record

odi:record_delete(C, RID, RecordVersion, Mode).

Returns:

Example:

odi:record_delete(C,{23,Pos1},1,sync).

Other functions:

Error handling

If any error occurs, function returns {error, Description}.