NAME

Arango::Tango - A simple interface to ArangoDB REST API

VERSION

version 0.008

SYNOPSYS

use Arango::Tango;

my $server = Arango::Tango->new( host     => '127.0.0.1',
                                 username => 'root',
                                 password => '123123123');

my $new_database = $server->create_database("mydb");
my $collection = $server->create_collection("mycollection");
$collection->create_document( { 'Hello' => 'World'} );

DISCLAIMER

The module is VERY incomplete. It is being written accordingly with my personal needs. While I tried ArangoDB2 it didn't work out of the box as I expected, and decided to write a simple strightforward solution.

Patches and suggestions are VERY welcome.

USAGE

The distribution is divided in different modules, namely:

Arango::Tango

This is the main module and hopefully the unique one you need to import in your code. It performs basic operations with the server, and returns objects of different kinds when needed.

Arango::Tango::Database

Represents a specific database. A simple object to keep track of the database you are working with, so you do not need to specify it everytime.

Arango::Tango::Collection

Represents a collection from a specific database. Again, it just keeps track of the collection name and the database where it resided.

METHODS

new

my $db = Arango::Tango->new( %options );

To start using the module you need a Arango::Tango instance. Use the new method to create one. Supported options are:

host

Host name. Defaults to localhost.

port

ArangoDB Port. Defaults to 8529.

username

Username to be used to connect to ArangoDB. Defaults to root.

password

Password to be used to connect to ArangoDB. Default to the empty string.

target_version

my $ans = $db->target_version;
$target_version = $ans->{target_version};   # might change in the future...

Returns the database version that this server requires. The version is returned in the version attribute of the result.

log

my $logs = $db-a>log(upto => "warning");

Returns fatal, error, warning or info log messages from the server’s global log.

log_level

my $log_levels = $db->log_level();

Returns the server’s current log level settings.

server_availability

my $info = $db->server_availability();

Return availability information about a server.

server_id

my $id = $db->server_id();

Returns the id of a server in a cluster. The request will fail if the server is not running in cluster mode.

server_mode

my $mode = $db->server_mode();

Return mode information about a server.

server_role

my $mode = $db->server_role();

Returns the role of a server in a cluster.

cluster_endpoints

my $endpoints = $db->cluster_endpoints;

Returns an object with an attribute endpoints, which contains an array of objects, which each have the attribute endpoint, whose value is a string with the endpoint description. There is an entry for each coordinator in the cluster. This method only works on coordinators in cluster mode. In case of an error the error attribute is set to true.

version

my $version_info = $db->version;
my $detailed_info = $db->version( 'details' => 1 );

Returns a hash reference with basic server info. Detailed information can be requested with the details option.

engine

my $engine = $db->engine;

Returns the storage engine the server is configured to use.

statistics

my $stats = $db->statistics;

Read the statistics of a server.

statistics_description

my $stats_desc = $db->statistics_description;

Statistics description

status

my $status = $db->status;

Return status information

time

my $time = $db->time;

Return system time

list_databases

my $databases = $db->list_databases;

Queries the server about available databases. Returns an array ref of database names.

create_database

my $new_db = $db->create_database("new_db");

Creates a new database, and returns a reference to a Arango::Tango::Database representing it.

database

my $system_db = $db->database("_system");

Opens an existing database, and returns a reference to a Arango::Tango::Database representing it.

delete_database

$db->delete_database("some_db");

Deletes an existing database.

list_collections

my $collections = $db->list_collections;

Lists collection details without specifying a specific database;

create_user

$db->create_user('username', passwd => "3432rfsdADF");

Creates an user. Optional parameters are passwd, active and extra.

delete_user

$db->delete_user('username');

Deletes an user.

list_users

$users = $db->list_users;

Fetches data about all users. You need the Administrate server access level in order to execute this REST call. Otherwise, you will only get information about yourself.

user

$user = $db->user("john");

Fetches data about the specified user. You can fetch information about yourself or you need the Administrate server access level in order to execute this REST call.

user_databases

$dbs = $db->user_databases("john", full => 1);

Fetch the list of databases available to the specified user. You need Administrate for the server access level in order to execute this REST call.

EXCEPTIONS

This module is written to die in any exception. Please use a try/catch module or eval, to detect them.

AUTHOR

Alberto Simões <ambs@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2019 by Alberto Simões.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.