ArangoDB2
view release on metacpan or search on metacpan
lib/ArangoDB2/Index.pm view on Meta::CPAN
package ArangoDB2::Index;
use strict;
use warnings;
use base qw(
ArangoDB2::Base
);
use Data::Dumper;
use JSON::XS;
# parameters that can be set when creating index or
# are returned when creating/getting index
our @PARAMS = qw(
byteSize constraint fields geoJson id ignoreNull
isNewlyCreated minLength size type unique
);
my $JSON = JSON::XS->new->utf8;
# byteSize
#
# get/set byteSize
sub byteSize { shift->_get_set('byteSize', @_) }
# constraint
#
# get/set constraint value
sub constraint { shift->_get_set_bool('constraint', @_) }
# create
#
# POST /_api/index
sub create
{
my($self, $index, $args) = @_;
# require index
die "Invalid Args"
unless ref $index eq 'HASH';
# process args
$args = $self->_build_args($args, \@PARAMS);
# set collection name
$args->{collection} = $self->collection->name;
# make request
my $res = $self->arango->http->post(
$self->api_path('index'),
$args,
$JSON->encode($index),
) or return;
# get name from id
my($name) = $res->{id} =~ m{/(\d+)$}
or return;
$self->{name} = $name;
# copy response data to instance
$self->_build_self($res, \@PARAMS);
# register
$self->collection->indexes->{$name} = $self;
return $self;
}
# delete
#
# DELETE /_api/index/{index-handle}
sub delete
{
my($self) = @_;
# make request
my $res = $self->arango->http->delete(
$self->api_path('index', $self->id),
) or return;
# remove from register
delete $self->collection->indexes->{$self->name};
return $res;
}
( run in 1.113 second using v1.01-cache-2.11-cpan-39bf76dae61 )