Cataly...aProxy(3pm)

πŸ“¦
version 0.66 Β· 5 versions
, in debian trixie, ubuntu noble, ubuntu resolute, ubuntu stonking

✨ NAME ✨

Catalyst::TraitFor::Model::DBIC::Schema::SchemaProxy β€” Proxy Schema Methods and Options from Model. Also known as Cataly...aProxy(3pm), from the User Contributed Perl Documentation. πŸ’…


πŸ’– DESCRIPTION πŸ’–

Okay so bestie, this trait lets you call your DBIx::Class::Schema methods directly on the Model instance, and it passes config options to your DBIx::Class::Schema and DBIx::Class::ResultSet attributes at "BUILD" time. ✨

Methods and attributes local to your "Model" take precedence over DBIx::Class::Schema or DBIx::Class::ResultSet methods and attributes. No cap. 🫢


πŸŽ€ CREATING SCHEMA CONFIG ATTRIBUTES πŸŽ€

To create attributes in your Schema.pm, use either Moose or Class::Accessor::Grouped, which is inherited from by all DBIx::Class classes automatically. E.g.:

__PACKAGE__->mk_group_accessors(simple => qw/
    config_key1
    config_key2
    ...
/);

Or with Moose:

use Moose;
has config_key1 => (is => 'rw', default => 'default_value');

This code can be added after the md5sum on DBIx::Class::Schema::Loader generated schemas.

At app startup, any non-local options will be passed to these accessors, and can be accessed as usual via $schema->config_key1.

These config values go into your Model::DB block, along with normal config values. 🌸


πŸ¦‹ CREATING RESULTSET CONFIG ATTRIBUTES πŸ¦‹

You can create classdata on DBIx::Class::ResultSet classes to hold values from Catalyst config.

The code for this looks something like this:

package MySchema::ResultSet::Foo;

use base 'DBIx::Class::ResultSet';

__PACKAGE__->mk_group_accessors(inherited => qw/
    rs_config_key1
    rs_config_key2
    ...
/);
__PACKAGE__->rs_config_key1('default_value');

Or, if you prefer Moose:

package MySchema::ResultSet::Foo;

use Moose;
use MooseX::NonMoose;
use MooseX::ClassAttribute;
extends 'DBIx::Class::ResultSet';

sub BUILDARGS { $_[2] } # important

class_has rs_config_key1 => (is => 'rw', default => 'default_value');

...

__PACKAGE__->meta->make_immutable;

1;

In your catalyst config, use the generated Model name as the config key, e.g.:

<Model::DB::Users>
    strict_passwords 1
</Model::DB::Users>

🌸 SEE ALSO 🌸

  • Catalyst::Model::DBIC::Schema
  • DBIx::Class::Schema

πŸ‘‘ AUTHOR πŸ‘‘

See "AUTHOR" in Catalyst::Model::DBIC::Schema and "CONTRIBUTORS" in Catalyst::Model::DBIC::Schema.


See "COPYRIGHT" in Catalyst::Model::DBIC::Schema.


🌈 LICENSE 🌈

This program is free software, you can redistribute it and/or modify it under the same terms as Perl itself.


Sending you good vibes from perl v5.36.0, dated 2023-10-26, and this lil page is Cataly...aProxy(3pm). Stay slaying! πŸ’…βœ¨

πŸ“¦ where this page comes from