NAME
Dancer2::Plugin::DBIx::Class - syntactic sugar for use of DBIx::Class
in Dancer2
VERSION
Version 1.0.
SYNOPSIS
# In your Dancer2 app, without DBIx::Class::Schema::ResultSetNames
# (but why would you?)
my $results = resultset('Human')->search( { . . .} );
#
# or, with DBIx::Class::Schema::ResultSetNames
my $results = humans->search( { . . . } );
my $single_person = human($human_id);
DESCRIPTION
Dancer2::Plugin::DBIx::Class adds convenience keywords to the DSL for
Dancer2, in order to make database calls more semantically-friendly.
CONFIGURATION
The configuration for this plugin can go in your config.yml, or in your
environment:
plugins:
DBIC:
dsn: dbi:SQLite:dbname=my.db # Just about any DBI-compatible DSN goes here
schema_class: MyApp::Schema
export_prefix: 'db_' # Optional, unless a table name (singular or plural)
# is also a DSL keyword.
YOU HAVE BEEN WARNED
The "optional" export_prefix configuration adds the given prefix to the
ResultSet names, if you are using DBIx::Class::Schema::ResultSetNames.
It is wise to do this, if you have table names that collide with other
Dancer2::Core::DSL keywords, or those added by other plugins. It is
likely that horrible, horrible things will happen to your app if you
don't take care of this. (session is a good example--ask me know I
know!)
FUNCTIONS
schema
This keyword returns the related DBIx::Class::Schema object, ready for
use.
resultset, rset, rs
These three keywords are syntactically identical, and, given a name of
a DBIx::Class::ResultSet object, will return the resultset, ready for
searching, or any other method you can use on a ResultSet:
my $cars = rs('Car')->search({ . . .});
NAMED RESULT SETS
DBIx::Class::Schema::ResultSetNames adds both singular and plural
method accessors for all resultsets.
So, instead of this:
my $result_set = resultset('Author')->search({...});
you may choose to this:
my $result_set = authors->search({...});
And instead of this:
my $result = resultset('Author')->find($id);
you may choose to this:
my $result = author($id)
The usual caveats apply to find() returning multiple records; that
behavior is deprecated, so if you try to do something like:
my $result = author( { first_name => 'John} );
...odds are things will blow up in your face a lot. Using a unique key
in find() is important.
SEE ALSO
* DBIx::Class::ResultSet
* DBIx::Class::Schema::ResultSetNames
* DBIx::Class::Schema
CREDIT WHERE CREDIT IS DUE
Practically all of this code is the work of Matt Trout
<
https://metacpan.org/author/MSTROUT>. I just tidied things up and
wrote documentation.
SOURCE
https://gitlab.com/geekruthie/Dancer2-Plugin-DBIx-Class
HOMEPAGE
https://metacpan.org/release/Dancer2-Plugin-DBIx-Classs
AUTHOR
D Ruth Holloway <
[email protected]>
COPYRIGHT AND LICENSE
This software is copyright (c) 2020 by D Ruth Holloway.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.