Bugzilla – Attachment 31293 Details for
Bug 12609
Replace use of DBI in C4::Ratings with DBIx::Class
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 12609 - Replace use of DBI in C4::Ratings with DBIx::Class
Bug-12609---Replace-use-of-DBI-in-C4Ratings-with-D.patch (text/plain), 4.93 KB, created by
Jonathan Druart
on 2014-08-29 14:42:24 UTC
(
hide
)
Description:
Bug 12609 - Replace use of DBI in C4::Ratings with DBIx::Class
Filename:
MIME Type:
Creator:
Jonathan Druart
Created:
2014-08-29 14:42:24 UTC
Size:
4.93 KB
patch
obsolete
>From 815c69499a5fc3e7bfa2324d3b317911b8abfdec Mon Sep 17 00:00:00 2001 >From: Kyle M Hall <kyle@bywatersolutions.com> >Date: Fri, 18 Jul 2014 10:42:03 -0400 >Subject: [PATCH] Bug 12609 - Replace use of DBI in C4::Ratings with > DBIx::Class > >Test Plan: >1) Apply this patch >2) prove t/db_dependent/Ratings.t >3) Note all unit tests pass > >Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com> >--- > C4/Ratings.pm | 89 ++++++++++++++++++++++++++++++++++------------------------- > 1 file changed, 52 insertions(+), 37 deletions(-) > >diff --git a/C4/Ratings.pm b/C4/Ratings.pm >index b9ae7de..f368bd8 100644 >--- a/C4/Ratings.pm >+++ b/C4/Ratings.pm >@@ -147,41 +147,44 @@ A hashref containing: > > sub GetRating { > my ( $biblionumber, $borrowernumber ) = @_; >- my $query = qq| SELECT COUNT(*) AS total, SUM(rating_value) AS sum >-FROM ratings WHERE biblionumber = ? |; > >- my $sth = C4::Context->dbh->prepare($query); >- $sth->execute($biblionumber); >- my $res = $sth->fetchrow_hashref(); >+ my $ratings = Koha::Database->new()->schema->resultset('Rating')->search( >+ { >+ biblionumber => $biblionumber, >+ } >+ ); >+ >+ my $sum = $ratings->get_column('rating_value')->sum(); >+ my $total = $ratings->count(); > > my ( $avg, $avg_int ) = 0; > >- if ( $res->{sum} and $res->{total} ) { >- eval { $avg = $res->{sum} / $res->{total} }; >+ if ( $sum and $total ) { >+ eval { $avg = $sum / $total }; > } > > $avg_int = sprintf( "%.1f", $avg ); > $avg = sprintf( "%.0f", $avg ); > > my %rating_hash; >- $rating_hash{rating_total} = $res->{total} || 0; >- $rating_hash{rating_avg} = $avg || 0; >- $rating_hash{rating_avg_int} = $avg_int ||0; >+ $rating_hash{rating_total} = $total || 0; >+ $rating_hash{rating_avg} = $avg || 0; >+ $rating_hash{rating_avg_int} = $avg_int || 0; > > if ($borrowernumber) { >- my $q2 = qq| >-SELECT rating_value FROM ratings WHERE biblionumber = ? AND borrowernumber = ?|; >- my $sth1 = C4::Context->dbh->prepare($q2); >- $sth1->execute( $biblionumber, $borrowernumber ); >- my $res1 = $sth1->fetchrow_hashref(); >- $rating_hash{'rating_value'} = $res1->{"rating_value"}; >+ my $rating = Koha::Database->new()->schema->resultset('Rating')->find( >+ { >+ biblionumber => $biblionumber, >+ borrowernumber => $borrowernumber, >+ } >+ ); >+ $rating_hash{'rating_value'} = $rating->rating_value(); > } > else { > $rating_hash{rating_borrowernumber} = undef; > $rating_hash{rating_value} = undef; > } > >-#### %rating_hash > return \%rating_hash; > } > >@@ -199,13 +202,16 @@ is 0, then the rating will be deleted. If the value is out of the range of > > sub AddRating { > my ( $biblionumber, $borrowernumber, $rating_value ) = @_; >- my $query = >- qq| INSERT INTO ratings (borrowernumber,biblionumber,rating_value) >- VALUES (?,?,?)|; >- my $sth = C4::Context->dbh->prepare($query); >- $sth->execute( $borrowernumber, $biblionumber, $rating_value ); >- my $rating = GetRating( $biblionumber, $borrowernumber ); >- return $rating; >+ >+ my $rating = Koha::Database->new()->schema->resultset('Rating')->create( >+ { >+ biblionumber => $biblionumber, >+ borrowernumber => $borrowernumber, >+ rating_value => $rating_value >+ } >+ ); >+ >+ return GetRating( $biblionumber, $borrowernumber ); > } > > =head2 ModRating >@@ -218,12 +224,17 @@ Mod a rating for a bib > > sub ModRating { > my ( $biblionumber, $borrowernumber, $rating_value ) = @_; >- my $query = >-qq|UPDATE ratings SET rating_value = ? WHERE borrowernumber = ? AND biblionumber = ?|; >- my $sth = C4::Context->dbh->prepare($query); >- $sth->execute( $rating_value, $borrowernumber, $biblionumber ); >- my $rating = GetRating( $biblionumber, $borrowernumber ); >- return $rating; >+ >+ my $rating = Koha::Database->new()->schema->resultset('Rating')->find( >+ { >+ borrowernumber => $borrowernumber, >+ biblionumber => $biblionumber >+ } >+ ); >+ >+ $rating->update( { rating_value => $rating_value } ); >+ >+ return GetRating( $biblionumber, $borrowernumber ); > } > > =head2 DelRating >@@ -236,13 +247,17 @@ Delete a rating for a bib > > sub DelRating { > my ( $biblionumber, $borrowernumber ) = @_; >- my $dbh = C4::Context->dbh; >- my $query = >- "delete from ratings where borrowernumber = ? and biblionumber = ?"; >- my $sth = C4::Context->dbh->prepare($query); >- my $rv = $sth->execute( $borrowernumber, $biblionumber ); >- my $rating = GetRating( $biblionumber, undef ); >- return $rating; >+ >+ my $rating = Koha::Database->new()->schema->resultset('Rating')->find( >+ { >+ borrowernumber => $borrowernumber, >+ biblionumber => $biblionumber >+ } >+ ); >+ >+ $rating->delete() if $rating; >+ >+ return GetRating($biblionumber); > } > > 1; >-- >2.0.0.rc2
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 12609
:
29846
|
29847
|
29848
|
29849
|
31293
|
31294
|
31449
|
31450