From 5e0f55fac841270e159ce230f478f28a2ff12d91 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Fri, 22 Jul 2016 13:56:36 +0100 Subject: [PATCH] Bug 16961: Add Koha::Objects->update In order to update several rows in a single query, we need this new method. Test plan: Confirm that the changes in Objects.t make sense and that the tests pass. Signed-off-by: Hector Castro Test passed successfully Signed-off-by: Katrin Fischer Signed-off-by: Kyle M Hall --- Koha/Objects.pm | 13 +++++++++++++ t/db_dependent/Koha/Objects.t | 17 ++++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/Koha/Objects.pm b/Koha/Objects.pm index c365e7f4d4..97436ad8e9 100644 --- a/Koha/Objects.pm +++ b/Koha/Objects.pm @@ -234,6 +234,19 @@ sub _wrap { return @objects; } +=head3 update + + Koha::Objects->search({ $key => $value})->update( \%values ); + +Sets the specified columns in the resultset to the supplied values in a single query. + +=cut + +sub update { + my ( $self, $params ) = @_; + return $self->_resultset()->update($params); +} + =head3 Koha::Objects->_resultset Returns the internal resultset or creates it if undefined diff --git a/t/db_dependent/Koha/Objects.t b/t/db_dependent/Koha/Objects.t index b92239aa2c..3551caae72 100644 --- a/t/db_dependent/Koha/Objects.t +++ b/t/db_dependent/Koha/Objects.t @@ -19,9 +19,10 @@ use Modern::Perl; -use Test::More tests => 2; +use Test::More tests => 3; use Koha::Authority::Types; +use Koha::Cities; use Koha::Patrons; use Koha::Database; @@ -36,5 +37,19 @@ my @columns = Koha::Patrons->columns; my $borrowernumber_exists = grep { /^borrowernumber$/ } @columns; is( $borrowernumber_exists, 1, 'Koha::Objects->columns should return the table columns' ); +subtest 'update' => sub { + plan tests => 2; + my $builder = t::lib::TestBuilder->new; + $builder->build( { source => 'City', value => { city_country => 'UK' } } ); + $builder->build( { source => 'City', value => { city_country => 'UK' } } ); + $builder->build( { source => 'City', value => { city_country => 'UK' } } ); + $builder->build( { source => 'City', value => { city_country => 'France' } } ); + $builder->build( { source => 'City', value => { city_country => 'France' } } ); + $builder->build( { source => 'City', value => { city_country => 'Germany' } } ); + Koha::Cities->search( { city_country => 'UK' } )->update( { city_country => 'EU' } ); + is( Koha::Cities->search( { city_country => 'EU' } )->count, 3, 'Koha::Objects->update should have updated the 3 rows' ); + is( Koha::Cities->search( { city_country => 'UK' } )->count, 0, 'Koha::Objects->update should have updated the 3 rows' ); +}; + $schema->storage->txn_rollback; 1; -- 2.39.5