NAME
Yancy::Backend::Role::Relational - A role to give a relational backend relational capabilities
VERSION
version 1.063
SYNOPSIS
package Yancy::Backend::RDBMS;
with 'Yancy::Backend::Role::Relational';
DESCRIPTION
This role implements utility methods to make backend classes work with entity relations, using DBI methods such as DBI/foreign_key_info
.
REQUIRED METHODS
The composing class must implement the following:
mojodb
The value must be a relative of Mojo::Pg et al.
mojodb_class
String naming the Mojo::*
class.
mojodb_prefix
String with the value at the start of a DBI dsn
.
filter_table
Called with a table name, returns a boolean of true to keep, false to discard - typically for a system table.
fixup_default
Called with a column's default value, returns the corrected version, which if undef
means no default.
column_info_extra
Called with a table-name, and the array-ref returned by "column_info" in DBI, returns a hash-ref mapping column names to an "extra info" hash for that column, with possible keys:
- auto_increment
-
a boolean
- enum
-
an array-ref of allowed values
dbcatalog
Returns the DBI "catalog" argument for e.g. "column_info" in DBI.
dbschema
Returns the DBI "schema" argument for e.g. "column_info" in DBI.
METHODS
new
Self-explanatory, implements "new" in Yancy::Backend.
id_field
Given a schema, returns the string name of its ID field.
list_sqls
Given a schema, parameters and options, returns SQL to generate the actual results, the count results, and the bind-parameters.
normalize
Given a schema and data, normalises any boolean values to 1 and 0.
delete
Self-explanatory, implements "delete" in Yancy::Backend.
set
Self-explanatory, implements "set" in Yancy::Backend.
get
Self-explanatory, implements "get" in Yancy::Backend.
list
Self-explanatory, implements "list" in Yancy::Backend.
read_schema
Self-explanatory, implements "read_schema" in Yancy::Backend.
SEE ALSO
AUTHOR
Doug Bell <preaction@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2020 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.