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 )