[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