logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

DBIx::Class::Helper::Row::ProxyResultSetUpdate - Efficiently reuse ResultSet updates from results

Author

       Arthur Axel "fREW" Schmidt <frioux+cpan@gmail.com>

Description

       This module makes reusing resultset updates from a result trivially easy.  Often the only way that people
       share update methods is by overriding update in their resultset to use "update_all" in
       DBIx::Class::ResultSet.  Unfortunately, that can end up being wildly inefficient.  Instead, if you can
       write your update in terms of the resultset, you can make your code much faster and more efficient.

Name

       DBIx::Class::Helper::Row::ProxyResultSetUpdate - Efficiently reuse ResultSet updates from results

Synopsis

       ResultSet:

        package MyApp::Schema::ResultSet::Foo;

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

        sub update {
           my ($self, $data) = @_;

           die 'you fool!' if $data->{name} eq 'fool';

           return $self->next::method($data);
        }

       Result:

        package MyApp::Schema::Result::Foo;

        use parent 'DBIx::Class::Core';

        __PACKAGE__->load_components(qw( Helper::Row::ProxyResultSetUpdate ));

        ...

       or with DBIx::Class::Candy:

        package MyApp::Schema::Result::Foo;

        use DBIx::Class::Candy -components => ['Helper::Row::ProxyResultSetMethod'];

        ...

See Also