logo
Free, Micro AI Code Reviews That Run on Git Commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, Micro AI Code Reviews That Run on Git Commit | Product Hunt git-lrc - Free, Micro AI Code Reviews That Run on Git 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