Arango-Tango
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
lib/Arango/Tango/Collection.pm view on Meta::CPAN
inject_properties => ['database', 'name' ],
},
truncate => {
rest => [ put => '{{database}}_api/collection/{name}/truncate' ],
inject_properties => [ 'database', 'name' ]
},
revision => {
rest => [ get => '{{database}}_api/collection/{name}/revision' ],
inject_properties => [ 'database', 'name' ],
},
info => {
rest => [ get => '{{database}}_api/collection/{name}' ],
inject_properties => [ 'database', 'name' ],
},
recalculate_count => {
rest => [ put => '{{database}}_api/collection/{name}/recalculateCount' ],
inject_properties => [ 'database', 'name' ],
},
rotate => {
rest => [ put => '{{database}}_api/collection/{name}/rotate' ],
inject_properties => [ 'database', 'name' ],
},
figures => {
rest => [ get => '{{database}}_api/collection/{name}/figures' ],
schema => { withRevisions => { type => 'boolean' }, withData => {type=>'boolean' }},
inject_properties => [ 'database', 'name' ],
},
count => {
rest => [ get => '{{database}}_api/collection/{name}/count' ],
schema => { withRevisions => { type => 'boolean' }, withData => {type=>'boolean' }},
inject_properties => [ 'database', 'name' ],
},
checksum => {
rest => [ get => '{{database}}_api/collection/{name}/checksum' ],
schema => { withRevisions => { type => 'boolean' }, withData => {type=>'boolean' }},
inject_properties => [ 'database', 'name' ],
},
set_properties => {
rest => [ put => '{{database}}_api/collection/{name}/properties'],
schema => { waitForSync => { type => 'boolean' }, journalSize => { type => 'integer' }},
inject_properties => [ 'database', 'name' ],
},
};
}
sub _new {
my ($class, %opts) = @_;
return bless {%opts} => $class;
}
sub bulk_import {
my ($self, $documents, %options) = @_;
$options{type} ||= "list";
return $self->{arango}->_api( bulk_import_list => {
database => $self->{database},
collection => $self->{name},
_body => $documents,
_url_parameters => \%options
})
}
sub document_paths { ## FIXME: try to get larger cursors whenever possible
my ($self) = @_;
my $paths = [];
my $query = qq!FOR doc IN $self->{name} RETURN CONCAT("/_db/", CURRENT_DATABASE(), "/_api/document/", doc._id)!;
my $cursor = $self->cursor($query);
while(my $row = $cursor->next) {
push @$paths, @$row;
}
return $paths;
}
sub create_document {
my ($self, $body) = @_;
die "Arango::Tango | Refusing to store undefined body" unless defined($body);
return $self->{arango}->_api( create_document => { database => $self->{database}, collection => $self->{name}, _body => $body})
}
sub replace_document {
my ($self, $key, $body) = @_;
die "Arango::Tango | Refusing to store undefined body" unless defined($body);
return $self->{arango}->_api( replace_document => { database => $self->{database}, collection => $self->{name}, key => $key, _body => $body})
}
sub get_access_level {
my ($self, $username) = @_;
return $self->{arango}->get_access_level( $username, $self->{database}, $self->{name} );
}
sub clear_access_level {
my ($self, $username) = @_;
return $self->{arango}->clear_access_level( $username , $self->{database}, $self->{name} );
}
sub set_access_level {
my ($self, $username, $grant) = @_;
return $self->{arango}->set_access_level($username, $grant, $self->{database}, $self->{name});
}
sub cursor {
my ($self, $aql, %opts) = @_;
return Arango::Tango::Cursor->_new(arango => $self->{arango}, database => $self->{database}, query => $aql, %opts);
}
1;
__END__
view all matches for this distributionview release on metacpan - search on metacpan
( run in 0.477 second using v1.00-cache-2.02-grep-82fe00e-cpan-1925d2aa809 )