DR::Tarantool::Spaces(3) Tarantool schema description

SYNOPSIS


use DR::Tarantool::Spaces;
my $s = new DR::Tarantool::Spaces({
1 => {
name => 'users', # space name
default_type => 'STR', # undescribed fields
fields => [
qw(login password role),
{
name => 'counter',
type => 'NUM'
},
{
name => 'something',
type => 'UTF8STR',
},
{
name => 'opts',
type => 'JSON',
}
],
indexes => {
0 => 'login',
1 => [ qw(login password) ],
2 => {
name => 'my_idx',
fields => 'login',
},
3 => {
name => 'my_idx2',
fields => [ 'counter', 'something' ]
}
}
},
0 => {
...
}
});
my $f = $s->pack_field('users', 'counter', 10);
my $f = $s->pack_field('users', 3, 10); # the same
my $f = $s->pack_field(1, 3, 10); # the same
my $ts = $s->pack_keys([1,2,3] => 'my_idx');
my $t = $s->pack_primary_key([1,2,3]);

DESCRIPTION

The package describes all spaces used in an application. It supports the following field types:
NUM, NUM64, STR
The standard Tarantool <http://tarantool.org> types.
UTF8STR
The same as STR, but the string is utf8-decoded after it's received from the server.
INT & INT64
The same as NUM and NUM64, but contain signed values.
JSON
The field is encoded with JSON::XS when putting into a database, and decoded after is received back from the server.

METHODS

new

    my $spaces = DR::Tarantool::Spaces->new( $spaces );

space

Return space object by number or name.

    my $space = $spaces->space('name');
    my $space = $spaces->space(0);

space_number

Return space number by its name.

pack_field

Packs one field into a format suitable for making a database request:

    my $field = $spaces->pack_field('space', 'field', $data);

unpack_field

Unpack one field after getting it from the server:

    my $field = $spaces->unpack_field('space', 'field', $data);

pack_tuple

Pack a tuple before making database request.

    my $t = $spaces->pack_tuple('space', [ 1, 2, 3 ]);

unpack_tuple

Unpack a tuple after getting it from the database:

    my $t = $spaces->unpack_tuple('space', \@fields);

SPACES methods

new

constructor

    use DR::Tarantool::Spaces;
    my $space = DR::Tarantool::Space->new($no, $space);

tuple_class

Create (or return) a class to hold tuple data. The class is a descendant of DR::Tarantool::Tuple. Returns a unique class (package) name. If a package with such name is already exists, the method doesn't recreate it.

name

Get a space name.

number

Get a space number.

field_number

Return field index by field name.

tail_index

Return index of the first element that is not described in the space.

pack_field

Pack a field before making a database request.

unpack_field

Unpack a single field in a server response.

pack_tuple

Pack a tuple to the binary protocol format:

unpack_tuple

Unpack a tuple in a server response.

index_number

returns index number by its name.

index_name

returns index name by its number.

COPYRIGHT AND LICENSE

 Copyright (C) 2011 Dmitry E. Oboukhov <[email protected]>
 Copyright (C) 2011 Roman V. Nikolaev <[email protected]>
 This program is free software, you can redistribute it and/or
 modify it under the terms of the Artistic License.

VCS

The project is placed git repo on github: <https://github.com/dr-co/dr-tarantool/>.