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 )