ArangoDB2
view release on metacpan or search on metacpan
lib/ArangoDB2/Document.pm view on Meta::CPAN
# make request
my $res = $self->arango->http->get(
$self->api_path($self->_class, $self->collection->name, $self->name),
) or return;
# copy response data to instance
$self->_build_self($res, []);
# if data is defined already then empty and copy data from response
if (my $data = $self->data) {
%$data = ();
$data->{$_} = $res->{$_} for keys %$res;
}
# otherwise use res for data
else {
$self->data($res);
}
# register object
my $register = $self->_register;
$self->collection->$register->{$self->name} = $self;
return $res;
}
# head
#
# HEAD /_api/document/{document-handle}
sub head
{
my($self) = @_;
my $res = $self->arango->http->head(
$self->api_path($self->_class, $self->collection->name, $self->name),
);
return $res;
}
# 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;
( run in 1.774 second using v1.01-cache-2.11-cpan-39bf76dae61 )