Coder Social home page Coder Social logo

zing-store-pg's Introduction

NAME

Zing::Store::Pg - Postgres Storage

ABSTRACT

Postgres Storage Abstraction

SYNOPSIS

use Test::DB::Postgres;
use Zing::Encoder::Dump;
use Zing::Store::Pg;

my $testdb = Test::DB::Postgres->new;
my $store = Zing::Store::Pg->new(
  client => $testdb->create->dbh,
  encoder => Zing::Encoder::Dump->new
);

# $store->drop;

DESCRIPTION

This package provides a Postgres-specific storage adapter for use with data persistence abstractions. The "client" attribute accepts a DBI object configured to connect to a DBD::Pg backend. The ZING_DBNAME environment variable can be used to specify the database name (defaults to "zing"). The ZING_DBHOST environment variable can be used to specify the database host (defaults to "localhost"). The ZING_DBPORT environment variable can be used to specify the database port (defaults to "5432"). The ZING_DBUSER environment variable can be used to specify the database username (defaults to "postgres"). The ZING_DBPASS environment variable can be used to specify the database password. The ZING_DBZONE environment variable can be used to specify the database table name (defaults to "entities").

INHERITS

This package inherits behaviors from:

Zing::Store

LIBRARIES

This package uses type constraints from:

Zing::Types

ATTRIBUTES

This package has the following attributes:

client

client(InstanceOf["DBI::db"])

This attribute is read-only, accepts (InstanceOf["DBI::db"]) values, and is optional.

METHODS

This package implements the following methods:

decode

decode(Str $data) : HashRef

The decode method decodes the JSON data provided and returns the data as a hashref.

  • decode example #1

      # given: synopsis
    
      $store->decode('{"status"=>"ok"}');
    

drop

drop(Str $key) : Int

The drop method removes (drops) the item from the datastore.

  • drop example #1

      # given: synopsis
    
      $store->drop('zing:main:global:model:temp');
    

encode

encode(HashRef $data) : Str

The encode method encodes and returns the data provided as JSON.

  • encode example #1

      # given: synopsis
    
      $store->encode({ status => 'ok' });
    

keys

keys(Str @keys) : ArrayRef[Str]

The keys method returns a list of keys under the namespace of the datastore or provided key.

  • keys example #1

      # given: synopsis
    
      my $keys = $store->keys('zing:main:global:model:temp');
    
  • keys example #2

      # given: synopsis
    
      $store->send('zing:main:global:model:temp', { status => 'ok' });
    
      my $keys = $store->keys('zing:main:global:model:temp');
    

lpull

lpull(Str $key) : Maybe[HashRef]

The lpull method pops data off of the top of a list in the datastore.

  • lpull example #1

      # given: synopsis
    
      $store->lpull('zing:main:global:model:items');
    
  • lpull example #2

      # given: synopsis
    
      $store->rpush('zing:main:global:model:items', { status => 'ok' });
    
      $store->lpull('zing:main:global:model:items');
    

lpush

lpush(Str $key, HashRef $val) : Int

The lpush method pushed data onto the top of a list in the datastore.

  • lpush example #1

      # given: synopsis
    
      $store->lpush('zing:main:global:model:items', { status => '1' });
    
  • lpush example #2

      # given: synopsis
    
      $store->lpush('zing:main:global:model:items', { status => '0' });
    
      $store->lpush('zing:main:global:model:items', { status => '0' });
    

recv

recv(Str $key) : Maybe[HashRef]

The recv method fetches and returns data from the datastore by its key.

  • recv example #1

      # given: synopsis
    
      $store->recv('zing:main:global:model:temp');
    
  • recv example #2

      # given: synopsis
    
      $store->send('zing:main:global:model:temp', { status => 'ok' });
    
      $store->recv('zing:main:global:model:temp');
    

rpull

rpull(Str $key) : Maybe[HashRef]

The rpull method pops data off of the bottom of a list in the datastore.

  • rpull example #1

      # given: synopsis
    
      $store->rpull('zing:main:global:model:items');
    
  • rpull example #2

      # given: synopsis
    
      $store->rpush('zing:main:global:model:items', { status => 1 });
      $store->rpush('zing:main:global:model:items', { status => 2 });
    
      $store->rpull('zing:main:global:model:items');
    

rpush

rpush(Str $key, HashRef $val) : Int

The rpush method pushed data onto the bottom of a list in the datastore.

  • rpush example #1

      # given: synopsis
    
      $store->rpush('zing:main:global:model:items', { status => 'ok' });
    
  • rpush example #2

      # given: synopsis
    
      $store->rpush('zing:main:global:model:items', { status => 'ok' });
    
      $store->rpush('zing:main:global:model:items', { status => 'ok' });
    

send

send(Str $key, HashRef $val) : Str

The send method commits data to the datastore with its key and returns truthy.

  • send example #1

      # given: synopsis
    
      $store->send('zing:main:global:model:temp', { status => 'ok' });
    

size

size(Str $key) : Int

The size method returns the size of a list in the datastore.

  • size example #1

      # given: synopsis
    
      my $size = $store->size('zing:main:global:model:items');
    
  • size example #2

      # given: synopsis
    
      $store->rpush('zing:main:global:model:items', { status => 'ok' });
    
      my $size = $store->size('zing:main:global:model:items');
    

slot

slot(Str $key, Int $pos) : Maybe[HashRef]

The slot method returns the data from a list in the datastore by its index.

  • slot example #1

      # given: synopsis
    
      my $model = $store->slot('zing:main:global:model:items', 0);
    
  • slot example #2

      # given: synopsis
    
      $store->rpush('zing:main:global:model:items', { status => 'ok' });
    
      my $model = $store->slot('zing:main:global:model:items', 0);
    

test

test(Str $key) : Int

The test method returns truthy if the specific key (or datastore) exists.

  • test example #1

      # given: synopsis
    
      $store->rpush('zing:main:global:model:items', { status => 'ok' });
    
      $store->test('zing:main:global:model:items');
    
  • test example #2

      # given: synopsis
    
      $store->drop('zing:main:global:model:items');
    
      $store->test('zing:main:global:model:items');
    

AUTHOR

Al Newkirk, [email protected]

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

zing-store-pg's People

Watchers

James Cloos avatar

zing-store-pg's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.