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

svn at pti.co.il svn at pti.co.il
Sat Jul 21 18:17:04 EEST 2007


Author: gabor
Date: 2007-07-21 18:17:04 +0300 (Sat, 21 Jul 2007)
New Revision: 281

Modified:
   trunk/
   trunk/lib/CPAN/Forum/DB/Tags.pm
   trunk/lib/CPAN/Forum/DBI.pm
Log:
add _fetch_hashref to CPAN::Forum::DBI
use that method to build a lookup table



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

Modified: trunk/lib/CPAN/Forum/DB/Tags.pm
===================================================================
--- trunk/lib/CPAN/Forum/DB/Tags.pm	2007-07-21 15:16:39 UTC (rev 280)
+++ trunk/lib/CPAN/Forum/DB/Tags.pm	2007-07-21 15:17:04 UTC (rev 281)
@@ -7,35 +7,21 @@
 
 sub get_tags_hash_of {
     my ($self, $group_id, $uid) = @_;
-    my $dbh = CPAN::Forum::DBI::db_Main();
     my $sql = "SELECT tags.name, tags.id
                              FROM tag_cloud, tags
                              WHERE tag_cloud.tag_id=tags.id AND tag_cloud.uid=? AND tag_cloud.group_id=?";
-    my $sth = $dbh->prepare($sql);
-    $sth->execute($uid, $group_id);
-    my %tags;
-    while (my ($name, $id) = $sth->fetchrow_array) {
-        $tags{$name} = $id;
-    }
-    return \%tags;
+    return $self->_fetch_hashref($sql, $uid, $group_id);
 }
 
-
 sub get_tags_of {
     my ($self, $group_id, $uid) = @_;
     if (not defined $uid) {
         return $self->get_tags_of_module($group_id);
     }
-    my $dbh = CPAN::Forum::DBI::db_Main();
     my $sql = "SELECT tags.name name
                              FROM tag_cloud, tags
                              WHERE tag_cloud.tag_id=tags.id AND tag_cloud.uid=? AND tag_cloud.group_id=?";
-    my $sth = $dbh->prepare($sql);
-    $sth->execute($uid, $group_id);
-    my $ar = $sth->fetchall_arrayref;
-    my @names = map { {name => $_->[0]} } @$ar;
-    return \@names;
-    #return $self->_fetch_arrayref_of_hashes($sql, $uid, $group_id);
+    return $self->_fetch_arrayref_of_hashes($sql, $uid, $group_id);
 }
 
 sub get_tags_of_module {
@@ -46,12 +32,6 @@
                              WHERE tag_cloud.tag_id=tags.id AND tag_cloud.group_id=?
                              GROUP BY name";
     return $self->_fetch_arrayref_of_hashes($sql, $group_id);
-
-    #my $sth = $dbh->prepare($sql);
-    #$sth->execute($group_id);
-    #my $ar = $sth->fetchall_arrayref;
-    #my @names = map { {name => $_->[0]} } @$ar;
-    #return \@names;
 }
 
 sub attach_tag {

Modified: trunk/lib/CPAN/Forum/DBI.pm
===================================================================
--- trunk/lib/CPAN/Forum/DBI.pm	2007-07-21 15:16:39 UTC (rev 280)
+++ trunk/lib/CPAN/Forum/DBI.pm	2007-07-21 15:17:04 UTC (rev 281)
@@ -103,5 +103,23 @@
     my $dbh = CPAN::Forum::DBI::db_Main();
     return $dbh->selectall_hashref($sql, $key, 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 
+# the first column and the values from the second column
+sub _fetch_hashref {
+    my ($self, $sql, @args);
+
+    my $dbh = CPAN::Forum::DBI::db_Main();
+    my $sth = $dbh->prepare($sql);
+    $sth->execute(@args);
+    my %h;
+    while (my ($key, $value) = $sth->fetchrow_array) {
+        $h{$key} = $value;
+    }
+    return \%h;
+}
+
 1;
 



More information about the Cpan-forum-commit mailing list