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 <ruth@hiruthie.me>

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.

