DR-Tarantool
view release on metacpan or search on metacpan
lib/DR/Tarantool/MsgPack/Proto.pm view on Meta::CPAN
return request
{
IPROTO_SYNC, $sync,
IPROTO_CODE, IPROTO_INSERT,
},
{
IPROTO_SPACE_ID, $space,
IPROTO_TUPLE, $tuple,
}
;
}
# HACK
_call_lua($sync, "box.space.$space:insert", $tuple);
}
sub replace($$$) {
my ($sync, $space, $tuple) = @_;
$tuple = [ $tuple ] unless ref $tuple;
croak "Cant convert HashRef to tuple" if 'HASH' eq ref $tuple;
if (looks_like_number $space) {
return request
{
IPROTO_SYNC, $sync,
IPROTO_CODE, IPROTO_REPLACE,
},
{
IPROTO_SPACE_ID, $space,
IPROTO_TUPLE, $tuple,
}
;
}
# HACK
_call_lua($sync, "box.space.$space:replace", $tuple);
}
sub del($$$) {
my ($sync, $space, $key) = @_;
$key = [ $key ] unless ref $key;
croak "Cant convert HashRef to key" if 'HASH' eq ref $key;
if (looks_like_number $space) {
return request
{
IPROTO_SYNC, $sync,
IPROTO_CODE, IPROTO_DELETE,
},
{
IPROTO_SPACE_ID, $space,
IPROTO_KEY, $key,
}
;
}
# HACK
_call_lua($sync, "box.space.$space:delete", $key);
}
sub update($$$$) {
my ($sync, $space, $key, $ops) = @_;
croak 'Oplist must be Arrayref' unless 'ARRAY' eq ref $ops;
$key = [ $key ] unless ref $key;
croak "Cant convert HashRef to key" if 'HASH' eq ref $key;
if (looks_like_number $space) {
return request
{
IPROTO_SYNC, $sync,
IPROTO_CODE, IPROTO_UPDATE,
},
{
IPROTO_SPACE_ID, $space,
IPROTO_KEY, $key,
IPROTO_TUPLE, $ops,
}
;
}
# HACK
_call_lua($sync, "box.space.$space:update", [ $key, $ops ]);
}
sub select($$$$;$$$) {
my ($sync, $space, $index, $key, $limit, $offset, $iterator) = @_;
$iterator = 'EQ' unless defined $iterator;
$offset ||= 0;
$limit = 0xFFFF_FFFF unless defined $limit;
$key = [ $key ] unless ref $key;
croak "Cant convert HashRef to key" if 'HASH' eq ref $key;
unless(looks_like_number $iterator) {
my $i = $iter{$iterator};
croak "Wrong iterator type: $iterator" unless defined $i;
$iterator = $i;
}
if (looks_like_number $space and looks_like_number $index) {
return request
{
IPROTO_SYNC, $sync,
IPROTO_CODE, IPROTO_SELECT,
},
{
IPROTO_KEY, $key,
IPROTO_SPACE_ID, $space,
IPROTO_OFFSET, $offset,
IPROTO_INDEX_ID, $index,
IPROTO_LIMIT, $limit,
IPROTO_ITERATOR, $iterator,
}
;
}
# HACK
_call_lua($sync, "box.space.$space.index.$index:select", [
$key,
{
offset => $offset,
limit => $limit,
iterator => $iterator
( run in 1.273 second using v1.01-cache-2.11-cpan-39bf76dae61 )