The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

DBIx::Class::ResultSet::CallbackInflator - Easy way to use DBIx::Class::ResultClass::CallbackInflator

SYNOPSIS

Given a DBIx::Class::ResultSet that consumes this component, such as the following:

    package MySchema::ResultSet::Peson;

    use strict;
    use warnings;
    use parent 'DBIx::Class::ResultSet';

    __PACKAGE__->load_components('ResultSet::CallbackInflator');

    ## Additional custom resultset methods, if any

    1;

Then later when you have a resultset of that class:

    my $rs = $schema->resultset('Person')
      ->inflator(sub {
        my ($cb, $source, $data, $optional_prefetch, @args) = @_;
        return $data;
      }, @args);

When the resultset in $rs is unrolled the callback will be run for each row returned from the query and you can customize the response (must be a reference). For example you might use this to change or add to the existing $data for a purpose that is meaningful to your application.

NOTE Currently we localize %_ in the callback coderef to be %$data to make it easier to do the most standard (I think) types of transformations.

DESCRIPTION

Lets you decide how a resultset inflates any data in rows from the database table it is pointing at (with any prefetch information included) by using a coderef which will in in place of 'inflate_result'.

This is basically sugar for DBIx::Class::ResultClass::CallbackInflator

METHODS

This component defines the following methods.

inflator

Allows you to use a callback as a custom inflator class. Example:

    $rs->inflator(sub {
      my ($cb, $result_source, \%columndata, \%prefetcheddata, @args) = @_;
      return ...
    })->all;

Should return a reference to the representation of the row that you are seeking.

NOTE: The last argument \%prefetcheddata is optional. If there isn't any the location in @_ will be undef so that any @args passed will be in expected position.

NOTE: The call to ->inflator returns the original resultset to allow for easy chaining.

AUTHOR

See DBIx::Class::ResultClass::CallbackInflator.

COPYRIGHT & LICENSE

See DBIx::Class::ResultClass::CallbackInflator.