ArangoDB2

 view release on metacpan or  search on metacpan

lib/ArangoDB2/Document.pm  view on Meta::CPAN


# keepNull
#
# get/set keepNull
sub keepNull { shift->_get_set_bool('keepNull', @_) }

# list
#
# GET /_api/document
sub list
{
    my($self, $args) = @_;
    # process args
    $args = $self->_build_args($args, ['type']);
    $args->{collection} = $self->collection->name;
    # make request
    return $self->arango->http->get(
        $self->api_path($self->_class),
        $args
    );
}

# update
#
# PATCH /_api/document/{document-handle}
sub update
{
    my($self, $data, $args) = @_;
    # process args
    $args = $self->_build_args($args, ['keepNull', 'policy', 'waitForSync']);
    # make request
    my $res = $self->arango->http->patch(
        $self->api_path($self->_class, $self->collection->name, $self->name),
        $args,
        $JSON->encode($data),
    ) or return;
    # copy response data to instance
    $self->_build_self($res, []);
    # if data is defined then copy patched data
    if (my $orig_data = $self->data) {
        $orig_data->{$_} = $data->{$_} for keys %$data;
    }
    # otherwise use passed data
    else {
        $self->data($data);
    }
    # register object
    my $register = $self->_register;
    $self->collection->$register->{$self->name} = $self;

    return $self;
}

# policy
#
# get/set policy
sub policy { shift->_get_set('policy', @_) }

# replace
#
# PUT /_api/document/{document-handle}
sub replace
{
    my($self, $data, $args) = @_;
    # process args
    $args = $self->_build_args($args, ['policy', 'waitForSync']);
    # make request
    my $res = $self->arango->http->put(
        $self->api_path($self->_class, $self->collection->name, $self->name),
        $args,
        $JSON->encode($data),
    ) or return;
    # copy response data to instance
    $self->_build_self($res, []);
    # if data is defined then replace data
    if (my $orig_data = $self->data) {
        %$orig_data = ();
        $orig_data->{$_} = $data->{$_} for keys %$data;
    }
    # otherwise use passed data
    else {
        $self->data($data);
    }
    # register object
    my $register = $self->_register;
    $self->collection->$register->{$self->name} = $self;

    return $self;
}

# type
#
# get/set type
sub type { shift->_get_set('type', @_) }

# waitForSync
#
# get/set waitForSync
sub waitForSync { shift->_get_set_bool('waitForSync', @_) }

# _class
#
# internal name for class
sub _class { 'document' }

# _register
#
# internal name for object index
sub _register { 'documents' }

1;

__END__


=head1 NAME

ArangoDB2::Document - ArangoDB document API methods

=head1 METHODS



( run in 0.658 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )