NAME
Zing::Store - Storage Abstraction
ABSTRACT
Data Storage Abstraction
SYNOPSIS
use Zing::Store;
my $store = Zing::Store->new;
# $store->drop;
DESCRIPTION
This package provides a data persistence interface to be implemented by data storage abstractions.
INHERITS
This package inherits behaviors from:
LIBRARIES
This package uses type constraints from:
ATTRIBUTES
This package has the following attributes:
encoder
encoder(Encoder)
This attribute is read-only, accepts (Encoder)
values, and is optional.
METHODS
This package implements the following methods:
args
args(Str $env) : (Any)
The args method parses strings with key/value data (typically from an environment variable) meant to be used in object construction.
decode
decode(Str $data) : HashRef
The decode method should decode the data provided and returns the data as a hashref.
- decode example #1
-
# given: synopsis $store->decode('{ status => "ok" }'); # e.g. # $ENV{ZING_ENCODER} # Zing::Encoder::Dump
drop
drop(Str $key) : Int
The drop method should remove items from the datastore by key.
encode
encode(HashRef $data) : Str
The encode method should encode and return the data provided in a format suitable for the underlying storage mechanism.
keys
keys(Str @keys) : ArrayRef[Str]
The keys method should return a list of keys under the namespace provided including itself.
lpull
lpull(Str $key) : Maybe[HashRef]
The lpull method should pop data off of the top of a list in the datastore.
lpush
lpush(Str $key) : Int
The lpush method should push data onto the top of a list in the datastore.
- lpush example #1
-
# given: synopsis # $store->rpush('zing:main:global:model:items', { status => '1' }); # $store->rpush('zing:main:global:model:items', { status => '2' }); $store->lpush('zing:main:global:model:items', { status => '0' });
recv
recv(Str $key) : Maybe[HashRef]
The recv method should fetch and return data from the datastore by its key.
rpull
rpull(Str $key) : Maybe[HashRef]
The rpull method should pop data off of the bottom of a list in the datastore.
rpush
rpush(Str $key, HashRef $val) : Int
The rpush method should push data onto the bottom of a list in the datastore.
- rpush example #1
-
# given: synopsis $store->rpush('zing:main:global:model:items', { status => 'ok' });
send
send(Str $key, HashRef $val) : Str
The send method should commit data to the datastore with its key and return truthy (or falsy if not).
size
size(Str $key) : Int
The size method should return the size of a list in the datastore.
slot
slot(Str $key, Int $pos) : Maybe[HashRef]
The slot method should return the data from a list in the datastore by its position in the list.
test
test(Str $key) : Int
The test method should return truthy if the specific key exists in the datastore.
- test example #1
-
# given: synopsis # $store->rpush('zing:main:global:model:items', { status => 'ok' }); $store->test('zing:main:global:model:items');
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".