NAME
    Mojolicious::Plugin::ORM::DBix - Easily load and access DBIx::Class
    functionality in Mojolicious apps

SYNOPSIS
      # Register plugin
      $self->plugin('ORM::DBIx' => {
        dsn                  => $conf->{dsn},
        username             => $conf->{user},
        password             => $conf->{pass},
      });

      ...

      # access in controller
      sub get_user($self) {
        my $user = $self->model("User")->find($self->req->param('id'));
        $self->render(json => {user => $user->username});
      }

      ..

      # use from command-line during development, following schema migration
  
      tyrrminal@devserver:/app$ script/myapp schema-load --noquiet
      Dumping manual schema for Myapp::Model to directory /app/lib ...
      Schema dump completed.

DESCRIPTION
    Mojolicious::Plugin::ORM::DBIx streamlines the process of getting DBIC
    classes generated and accessible from within a Mojolicious application.

METHODS
    Mojolicious::Plugin::ORM::DBIx inherits all methods from
    Mojolicious::Plugin and implements the following new ones

  register( $args )
    Register plugin in Mojolicious application. The following keys are
    supported in $args

   dsn
    The data source name <https://en.wikipedia.org/wiki/Data_source_name>
    for connecting to the database. Defaults to "dbi:SQLite:dbname=:memory:"
    if omitted.

   namespace
    The perl class name of the root schema object for the application.
    Defaults to $Moniker::Model if omitted, where $Moniker is the
    mojolicious moniker with the first letter capitalized. This class does
    not need to be manually created, as "run_schema_load" can create it
    along with the rest of the schema.

   username
    The database connection username

   password
    The database connection password

   connect_params
    An optional HashRef of additional connection parameters to be passed to
    DBI at connection time.

    *The following parameters pertain to DBIx schema loader code generation*

   lib
    The directory where the schema loader files will be written to. Default
    "$MOJO_HOME/lib"

   codegen_filters
    An optional ordered ArrayRef of functions for filtering/modifying the
    code generated by the schema loader. See "filter_generated_code" in
    DBIx::Class::Schema::Loader::Base for details.

   overwrite
    A proxy value for "overwrite_modifications" in
    DBIx::Class::Schema::Loader::Base. N.B. defaults to true

   feature_bundle
    When generating code, add a "use vX.XX;" line near the end of the file,
    such that it applies to manual additions to the Result class files (but
    not to the generated code itself). Defaults to the perl version being
    used to generate the code. Any value that is not a valid perl version
    <https://perldoc.perl.org/version> will cause this option to be disabled
    with a warning written to the mojolicious log. Pass undef to disable
    this option without a warning.

    See FEATURE-BUNDLES <https://perldoc.perl.org/feature#FEATURE-BUNDLES>
    for more information on valid values.

    If enabled, this line is added to the code before running any custom
    "codegen_filters"

   tidy_format_skipping
    When using Perl::Tidy you may wind up with formatting disagreements
    between the generated code and perltidy's ruleset. This option allows
    you to add lines around the generated code to disable perltidy
    formatting, while leaving it enabled for any custom code added to the
    end of the Result class files.

    Takes an ArrayRef containing two strings: "[$disable_formatting,
    $enable_formatting]". Default is "['#<<<','#>>>']"

    See
    <https://perltidy.sourceforge.net/perltidy.html#Skipping-Selected-Sectio
    ns-of-Code>.

    Pass undef to disable this behavior.

    If enabled, these lines are added after running any custom
    "codegen_filters"

   dbix_components
    An optional ArrayRef of DBIx components to load into generated classes.
    Defaults to "["InflateColumn::DateTime","Relationship::Predicate"]"

    The defaults will be prepended to the contents of the passed ArrayRef;
    to circumvent this behavior, pass "undef" as the first element of the
    array.

   loader_options
    An optional HashRef of additional parameters to pass to "make_schema_at"
    in DBIx::Class::Schema::Loader. See DBIx::Class::Schema::Loader::Base
    for possible values and their meanings.

  db
    Returns the root schema object for the application, a subclass of
    DBIx::Class::Schema

  model( $model_name )
    Returns the resultset object for the specified model name. Identical to
    "app->db->resultset($model_name)"

  run_schema_load( $debug, $quiet )
    Generate (or regenerate) model classes from database schema. More or
    less, this just runs "make_schema_at" in DBIx::Class::Schema::Loader
    with options set at the time of plugin registration.

    Parameters:

   $debug
    Write generated classes to "STDERR". Default: false

    See "debug" in DBIx::Class::Schema::Loader::Base

   $quiet
    Don't print the "Dumping manual schema...", "Schema dump completed"
    messages. Default: true

    See "quiet" in DBIx::Class::Schema::Loader::Base

COMMANDS
  schema-load [--debug] [--[no]quiet]
    Mojolicious command to execute "run_schema_load"

AUTHOR
    Mark Tyrrell "<mark@tyrrminal.dev>"

LICENSE
    Copyright (c) 2024 Mark Tyrrell

    Permission is hereby granted, free of charge, to any person obtaining a
    copy of this software and associated documentation files (the
    "Software"), to deal in the Software without restriction, including
    without limitation the rights to use, copy, modify, merge, publish,
    distribute, sublicense, and/or sell copies of the Software, and to
    permit persons to whom the Software is furnished to do so, subject to
    the following conditions:

    The above copyright notice and this permission notice shall be included
    in all copies or substantial portions of the Software.

    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
    IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
    CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
    TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
    SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

