The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Yancy::Backend

VERSION

version 1.004

SYNOPSIS

    my $be = Yancy::Backend->new( $url );

    $result = $be->list( $collection, $where, $options );
    say "Total: " . $result->{total};
    say "Name: " . $_->{name} for @{ $result->{items} };

    $item = $be->get( $collection, $id );
    $be->set( $collection, $id, $item );
    $be->delete( $collection, $id );
    $item = $be->create( $collection, $id, $item );

DESCRIPTION

A Yancy::Backend handles talking to the database. Different Yancy backends will support different databases. To use a backend, see "SUPPORTED BACKENDS". To make your own backend, see "METHODS" for the list of methods you must implement, their arguments, and their return values.

Terminology

Yancy backends work with collections, which are made up of items. A collection is a set of items, like a database table. An item is a single element of a collection, and must be a hashref.

SUPPORTED BACKENDS

METHODS

new

    my $url = 'test://custom_string';
    my $be = Yancy::Backend::Test->new( $url, $collections );

Create a new backend object. $url is a string that begins with the backend name followed by a colon. Everything else in the URL is for the backend to use to describe how to connect to the underlying database and any options for the backend object itself.

$collections is a hash reference of collection configuration from the Yancy configuration. Important configuration for the backend to support:

x-id-field

The name of the ID field for the collection. Defaults to id. It does not need to be the primary key: This can be any unique identifier.

The backend name will be run through ucfirst before being looked up in Yancy::Backend::. For example, mysql://... will use the Yancy::Backend::Mysql module.

list

    my $result = $be->list( $collection, $where, $opt );
    # { total => ..., items => [ ... ] }

Fetch a list of items from a collection. $collection is the collection name. $where is a SQL::Abstract where structure.

$opt is a hash reference with the following keys:

Returns a hashref with two keys:

items

An array reference of hash references of item data

total

The total count of items that would be returned without limit or offset.

get

    my $item = $be->get( $collection, $id );

Get a single item. $collection is the collection name. $id is the ID of the item to get. Returns a hashref of item data.

set

    $be->set( $collection, $id, $item );

Update an item. $collection is the collection name. $id is the ID of the item to update. $item is the item's data to set. Returns a boolean that is true if a row with the given ID was found and updated, false otherwise.

create

    my $id = $be->create( $collection, $item );

Create a new item. $collection is the collection name. $item is the item's data. Returns the ID of the row created suitable to be passed in to the get() method|/get.

delete

    $be->delete( $collection, $id );

Delete an item. $collection is the collection name. $id is the ID of the item to delete. Returns a boolean that is true if a row with the given ID was found and deleted. False otherwise.

read_schema

    my $schema = $be->read_schema;

Read the schema from the database tables. Returns an OpenAPI schema ready to be merged into the user's configuration.

AUTHOR

Doug Bell <preaction@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2018 by Doug Bell.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.