ArangoDB2

 view release on metacpan or  search on metacpan

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

package ArangoDB2::Document;

use strict;
use warnings;

use base qw(
    ArangoDB2::Base
);

use Data::Dumper;
use JSON::XS;

my $JSON = JSON::XS->new->utf8;



# create
#
# POST /_api/document
#
# Query Parameters
#
# collection: The collection name.
# createCollection: If this parameter has a value of true or yes, then the collection is created if it does not yet exist. Other values will be ignored so the collection must be present for the operation to succeed.
#
# return self on success, undef on failure
sub create
{
    my($self, $data, $args) = @_;
    # require data
    die "Invlalid args"
        unless ref $data eq 'HASH';
    # process args
    $args = $self->_build_args($args, ['createCollection','waitForSync']);
    # set collection name as query param
    $args->{collection} = $self->collection->name;
    # make request
    my $res = $self->arango->http->post(
        $self->api_path($self->_class),
        $args,
        $JSON->encode($data),
    ) or return;
    # copy response data to instance
    $self->_build_self($res, []);
    # set data pointer to passed in doc, which will
    # be updated by future object ops
    $self->{data} = $data;
    # register
    my $register = $self->_register;
    $self->collection->$register->{$self->name} = $self;

    return $self;
}

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

# delete
#
# DELETE /_api/document/{document-handle}
sub delete
{
    my($self, $args) = @_;
    # process args
    $args = $self->_build_args($args, ['policy', 'rev', 'waitForSync']);
    # make request
    my $res = $self->arango->http->delete(
        $self->api_path($self->_class, $self->collection->name, $self->name),
        $args,
    ) or return;
    # empty data



( run in 1.389 second using v1.01-cache-2.11-cpan-39bf76dae61 )