[Cpan-forum-commit] rev 286 - in trunk: . lib/CPAN lib/CPAN/Forum lib/CPAN/Forum/DB lib/CPAN/Forum/RM

svn at pti.co.il svn at pti.co.il
Sat Jul 21 18:19:50 EEST 2007


Author: gabor
Date: 2007-07-21 18:19:50 +0300 (Sat, 21 Jul 2007)
New Revision: 286

Modified:
   trunk/
   trunk/lib/CPAN/Forum.pm
   trunk/lib/CPAN/Forum/DB/Groups.pm
   trunk/lib/CPAN/Forum/DBI.pm
   trunk/lib/CPAN/Forum/RM/Author.pm
   trunk/lib/CPAN/Forum/RM/Dist.pm
Log:
make the RM::Author::author() run mode to use only plain SQL queries



Property changes on: trunk
___________________________________________________________________
Name: svk:merge
   - 7bc34947-122d-0410-bc5a-f898d2bb5f81:/local/cpan-forum:4278
8c4c90e1-83eb-0310-96eb-e7cb62807872:/local/cpan-forum:12752
   + 7bc34947-122d-0410-bc5a-f898d2bb5f81:/local/cpan-forum:4279
8c4c90e1-83eb-0310-96eb-e7cb62807872:/local/cpan-forum:12752

Modified: trunk/lib/CPAN/Forum/DB/Groups.pm
===================================================================
--- trunk/lib/CPAN/Forum/DB/Groups.pm	2007-07-21 15:19:16 UTC (rev 285)
+++ trunk/lib/CPAN/Forum/DB/Groups.pm	2007-07-21 15:19:50 UTC (rev 286)
@@ -24,7 +24,14 @@
                WHERE $field=? AND authors.id=groups.pauseid";
     return $self->_fetch_single_hashref($sql, $value);
 }
+sub list_ids_by {
+    my ($self, $field, $value) = @_;
+    Carp::croak("Invalid field '$field'") if $field ne 'pauseid';
+    my $sql = "SELECT id FROM groups WHERE $field=?";
+    return $self->_select_column($sql, $value);
+}
 
+
 sub dump_groups {
     my ($self) = @_;
     my $sql = "SELECT id, name FROM groups";
@@ -53,7 +60,5 @@
 
     return $self->info_by(name => $args{name});
 }
-
-
 1;
 

Modified: trunk/lib/CPAN/Forum/DBI.pm
===================================================================
--- trunk/lib/CPAN/Forum/DBI.pm	2007-07-21 15:19:16 UTC (rev 285)
+++ trunk/lib/CPAN/Forum/DBI.pm	2007-07-21 15:19:50 UTC (rev 286)
@@ -106,6 +106,13 @@
     return $dbh->selectall_hashref($sql, $key, undef, @args);
 }
 
+sub _select_column {
+    my ($self, $sql, @args) = @_;
+    my $dbh = CPAN::Forum::DBI::db_Main();
+    return $dbh->selectcol_arrayref($sql, undef, @args);
+}
+
+
 # given an SQL statement with two columns selected:
 # SELECT key, value FROM table WHERE ...;
 # returns a hash reference where the keys are built from 

Modified: trunk/lib/CPAN/Forum/RM/Author.pm
===================================================================
--- trunk/lib/CPAN/Forum/RM/Author.pm	2007-07-21 15:19:16 UTC (rev 285)
+++ trunk/lib/CPAN/Forum/RM/Author.pm	2007-07-21 15:19:50 UTC (rev 286)
@@ -25,7 +25,7 @@
     $t->param(pauseid => $pauseid);
     $t->param(title => "CPAN Forum - $pauseid");
 
-    my $author = CPAN::Forum::DB::Authors->get_author_by_pauseid($pauseid);
+    my $author = CPAN::Forum::DB::Authors->get_author_by_pauseid($pauseid); # SQL
     if (not $author) {
         $self->log->warning("Invalid pauseid '$pauseid'");
         return $self->internal_error(
@@ -34,12 +34,11 @@
         );
     }
     # TODO: simplify query!
-    my @group_ids = map {$_->id}
-                    CPAN::Forum::DB::Groups->search( pauseid => $author->{id} );
-    $self->log->debug("Group IDs: @group_ids");
+    my $group_ids = CPAN::Forum::DB::Groups->list_ids_by( pauseid => $author->{id} ); # SQL
+    $self->log->debug("Group IDs: @$group_ids");
     my $page = $q->param('page') || 1;
-    if (@group_ids) {
-        $self->_search_results($t, {where => {gid => \@group_ids}, page => $page});
+    if (@$group_ids) {
+        $self->_search_results($t, {where => {gid => $group_ids}, page => $page});
     }
     #$self->_subscriptions($t, $gr);
     $t->output;

Modified: trunk/lib/CPAN/Forum/RM/Dist.pm
===================================================================
--- trunk/lib/CPAN/Forum/RM/Dist.pm	2007-07-21 15:19:16 UTC (rev 285)
+++ trunk/lib/CPAN/Forum/RM/Dist.pm	2007-07-21 15:19:50 UTC (rev 286)
@@ -34,7 +34,7 @@
     $t->param(group => $group_name);
     $t->param(title => "CPAN Forum - $group_name");
 
-    my $gr = CPAN::Forum::DB::Groups->info_by(name => $group_name);
+    my $gr = CPAN::Forum::DB::Groups->info_by(name => $group_name); # SQL
     if (not $gr) {
         $self->log->warning("Invalid group '$group_name'");
         $gr = $self->process_missing_dist($group_name);
@@ -65,13 +65,13 @@
         $t->param(pauseid_name => $gr->{pauseid_name});
     }
 
-    my $frequent_tags = CPAN::Forum::DB::Tags->get_tags_of_module($gid);
+    my $frequent_tags = CPAN::Forum::DB::Tags->get_tags_of_module($gid); # SQL
     $t->param(frequent_tags      => $frequent_tags);
 
 
     my $uid = $self->session->param('uid');
     if ($uid) {
-        my $mytags = CPAN::Forum::DB::Tags->get_tags_of($gid, $uid);
+        my $mytags = CPAN::Forum::DB::Tags->get_tags_of($gid, $uid); # SQL
         $t->param(mytags      => $mytags);
         $t->param(show_tags => 1);
     }

Modified: trunk/lib/CPAN/Forum.pm
===================================================================
--- trunk/lib/CPAN/Forum.pm	2007-07-21 15:19:16 UTC (rev 285)
+++ trunk/lib/CPAN/Forum.pm	2007-07-21 15:19:50 UTC (rev 286)
@@ -1372,7 +1372,6 @@
 sub _subscriptions {
     my ($self, $t, $group) = @_;
 
-
     my %people;
     foreach my $s (
             CPAN::Forum::DB::Subscriptions_all->search(allposts => 1),



More information about the Cpan-forum-commit mailing list