ArangoDB2
view release on metacpan or search on metacpan
lib/ArangoDB2/Graph/Vertex.pm view on Meta::CPAN
{
my($self, $args) = @_;
# process args
$args = $self->_build_args($args, ['name', 'waitForSync']);
# make request
my $res = $self->arango->http->delete(
$self->api_path('gharial', $self->graph->name, $self->_class, $self->collection->name, delete $args->{name}),
) or return;
# empty data
if (my $data = $self->data) {
%$data = ();
}
# unregister object
my $register = $self->_register;
delete $self->collection->$register->{$self->name};
return $res;
}
# get
#
# GET /system/gharial/graph-name/vertex/collection-name/vertex-key
sub get
{
my($self, $args) = @_;
# process args
$args = $self->_build_args($args, ['data', 'name']);
# make request
my $res = $self->arango->http->get(
$self->api_path('gharial', $self->graph->name, $self->_class, $self->collection->name, delete $args->{name}),
) or return;
# get response data
$res = $res->{$self->_class}
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 $self;
}
# keepNull
#
# get/set keepNull
sub keepNull { shift->_get_set_bool('keepNull', @_) }
# update
#
# PATCH /system/gharial/graph-name/vertex/collection-name/vertex-key
sub update
{
my($self, $data, $args) = @_;
# require data
die "Invalid args"
unless ref $data eq 'HASH';
# process args
$args = $self->_build_args($args, ['name', 'keepNull', 'waitForSync']);
# make request
my $res = $self->arango->http->patch(
$self->api_path('gharial', $self->graph->name, $self->_class, $self->collection->name, delete $args->{name}),
$args,
$JSON->encode($data),
) or return;
# get response data
$res = $res->{$self->_class}
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;
}
# replace
#
# PUT /system/gharial/graph-name/vertex/collection-name/vertex-key
sub replace
{
my($self, $data, $args) = @_;
# require data
die "Invlalid args"
unless ref $data eq 'HASH';
# process args
$args = $self->_build_args($args, ['name', 'waitForSync']);
# make request
my $res = $self->arango->http->put(
$self->api_path('gharial', $self->graph->name, $self->_class, $self->collection->name, delete $args->{name}),
$args,
$JSON->encode($data),
) or return;
# get response data
$res = $res->{$self->_class}
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;
}
( run in 1.048 second using v1.01-cache-2.11-cpan-5837b0d9d2c )