From 6a2a15aae803997cb9f090a59e893a7242d56923 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Tue, 9 Aug 2016 15:46:11 +0100 Subject: [PATCH] Bug 17091: Add AUTOLOAD to Koha::Objects Up to now if a Koha::Objects based object needs to call DBIx::Class methods, we have to create a new method for Koha::Objects, something like: sub method { my $self = shift; return $self->_resultset->method } To simplify and ease the call to DBIx::Class method, this patch defines an AUTOLOAD to call the DBIx::Class method on the resultset we are encapsulating. Signed-off-by: Hector Castro Signed-off-by: Kyle M Hall Signed-off-by: Brendan Gallagher --- Koha/Objects.pm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/Koha/Objects.pm b/Koha/Objects.pm index 97436ad8e9..03f39dc009 100644 --- a/Koha/Objects.pm +++ b/Koha/Objects.pm @@ -280,7 +280,29 @@ sub columns { return Koha::Database->new->schema->resultset( $class->_type )->result_source->columns; } +=head3 AUTOLOAD +The autoload method is used call DBIx::Class method on a resultset. + +Important: If you plan to use one of the DBIx::Class methods you must provide +relevant tests in t/db_dependent/Koha/Objects.t +Currently count, pager, reset and update are covered. + +=cut + +sub AUTOLOAD { + my ( $self, @params ) = @_; + + my $method = our $AUTOLOAD; + $method =~ s/.*:://; + + my $r = eval { $self->_resultset->$method(@params) }; + if ( $@ ) { + carp "No method $method found for " . ref($self) . " " . $@; + return + } + return $r; +} =head3 _type