NAME

Nano::Nodes - Persistable Index

ABSTRACT

Persistable Index Super Class

SYNOPSIS

  use Nano::Nodes;

  my $nodes = Nano::Nodes->new(
    type => 'Nano::Node',
  );

  # $nodes->save;

DESCRIPTION

This package provides a persistable index super class. It is meant to be subclassed but can be used directly as well.

INHERITS

This package inherits behaviors from:

Nano::Node

LIBRARIES

This package uses type constraints from:

Nano::Types

ATTRIBUTES

This package has the following attributes:

orders

  orders(ArrayRef[CodeRef])

This attribute is read-only, accepts (ArrayRef[CodeRef]) values, and is optional.

scopes

  scopes(ArrayRef[CodeRef])

This attribute is read-only, accepts (ArrayRef[CodeRef]) values, and is optional.

type

  type(Str)

This attribute is read-only, accepts (Str) values, and is required.

METHODS

This package implements the following methods:

add

  add(HashRef $data) : Object

The add method creates a new object, adds it to the index, and returns the created object.

add example #1
  # given: synopsis

  my $node = $nodes->add({ rand => time });

all

  all() : ArrayRef[Object]

The all method proxies to the attached Nano::Search instance and returns the results.

all example #1
  # given: synopsis

  my $all = $nodes->all;

count

  count() : Int

The count method proxies to the attached Nano::Search instance and returns the results.

count example #1
  # given: synopsis

  my $count = $nodes->count;

drop

  drop() : Object

The drop method deletes the entire index and all of its indices.

drop example #1
  # given: synopsis

  $nodes = $nodes->drop;

first

  first() : Maybe[Object]

The first method proxies to the attached Nano::Search instance and returns the result.

first example #1
  # given: synopsis

  my $first = $nodes->first;

get

  get(Str $name) : Maybe[Object]

The get method returns the object (based on ID) from the index (if found).

get example #1
  # given: synopsis

  my $result = $nodes->get('0000001');

last

  last() : Maybe[Object]

The last method proxies to the attached Nano::Search instance and returns the result.

last example #1
  # given: synopsis

  my $last = $nodes->last;

order

  order(CodeRef $callback) : Object

The order method registers a sort order (search ordering) and returns a new invocant instance.

order example #1
  # given: synopsis

  $nodes = $nodes->order(sub {
    my ($a, $b) = @_;

    $a->id cmp $b->id
  });

scope

  scope(CodeRef $callback) : Object

The scope method registers a scope (search filter) and returns a new invocant instance.

scope example #1
  # given: synopsis

  $nodes = $nodes->scope(sub {
    my ($node) = @_;

    !!$node->{active}
  });
  search() : Search

The search method returns a Nano::Search object associated with the invocant.

search example #1
  # given: synopsis

  my $search = $nodes->search;

serialize

  serialize() : HashRef

The serialize method returns a persistence representaton of the invocant. Circular dependencies can result in a deep recursion error, however, circular dependencies can be persisted if modeled properly. Note: blessed objects which are neither Nano::Node nor Nano::Nodes will be ignored.

serialize example #1
  # given: synopsis

  my $serial = $nodes->serialize;

set

  set(Node $object) : Object

The set method adds the node object provided to the index and returns the provided object.

set example #1
  # given: synopsis

  use Nano::Node;

  my $node = Nano::Node->new(id => '0000003');

  $node = $nodes->set($node);

AUTHOR

Al Newkirk, awncorp@cpan.org

LICENSE

Copyright (C) 2011-2019, Al Newkirk, et al.

This is free software; you can redistribute it and/or modify it under the terms of the The Apache License, Version 2.0, as elucidated in the "license file".

PROJECT

Wiki

Project

Initiatives

Milestones

Contributing

Issues