← Back to team overview

mvhub-dev team mailing list archive

[Branch ~mvhub-dev/mvhub/trunk] Rev 349: All queries from Guide.pm was moved to sql_select.lib and the branch is

 

Merge authors:
  Priya Ravindran (priya)
  Sijing (sshen)
Related merge proposals:
  https://code.launchpad.net/~priya/mvhub/move_sql_into_sql_library/+merge/21562
  proposed by: Priya Ravindran (priya)
  review: Approve - Dan MacNeil (omacneil)
------------------------------------------------------------
revno: 349 [merge]
committer: Priya Ravindran <pthirumal@xxxxxxxxxx>
branch nick: trunk
timestamp: Tue 2010-03-23 12:57:19 -0400
message:
  All queries from Guide.pm was moved to sql_select.lib and the branch is 
  merged with trunk
modified:
  app-mvhub/DocumentRoot/cgi-bin/mvhub/program.pl
  app-mvhub/conf/sql_select.lib
  app-mvhub/t/sql_lib_sanity.t
  lib-mvhub/lib/MVHub/Guide.pm
  lib-mvhub/lib/MVHub/Utils/DB.pm
  lib-mvhub/t/perltidy.t


--
lp:mvhub
https://code.launchpad.net/~mvhub-dev/mvhub/trunk

Your team mvhub-dev is subscribed to branch lp:mvhub.
To unsubscribe from this branch go to https://code.launchpad.net/~mvhub-dev/mvhub/trunk/+edit-subscription.
=== modified file 'app-mvhub/DocumentRoot/cgi-bin/mvhub/program.pl'
--- app-mvhub/DocumentRoot/cgi-bin/mvhub/program.pl	2010-03-09 18:49:56 +0000
+++ app-mvhub/DocumentRoot/cgi-bin/mvhub/program.pl	2010-03-17 14:33:14 +0000
@@ -367,7 +367,7 @@
     );
 
     my $sql = MVHub::Utils::DB::get_sql_select_statement(
-        'PROGRAM_LAST_UPDATED_BY_PROGRAM_ID');
+        'PROGRAM_X_LAST_UPDATED');
 
     my $date_created
         = ( $dbh->selectrow_array( $sql, {}, $values_href->{'program_id'} ) )

=== modified file 'app-mvhub/conf/sql_select.lib'
--- app-mvhub/conf/sql_select.lib	2010-03-07 01:34:22 +0000
+++ app-mvhub/conf/sql_select.lib	2010-03-17 14:09:50 +0000
@@ -2,17 +2,48 @@
 # LICENSE: AGPLv3 
 # CONTACT: joe@xxxxxxxxxx
 
-# Queries should be named 
-# tablename_tablename_description
-# they should be in the file in alphabetical order
-
-[AGENCY_ALL]
+
+# queries should be named with this convention
+
+    # TABLE_NAME_TABLE_NAME_x_DESCRIPTION_OF_RETURNED_VALUES
+
+# The goals of this convention are:
+
+#      When queries are in this file sorted
+#      alphabetically, duplicate queries will
+#      jump out
+
+#      You should have a general idea of
+#      what the query does by looking at the name
+
+#      Keep query names relatively brief
+#      It is pointless to the query name be the same
+#      as the query sql
+
+#  We deliberately do not include WHERE clause
+#  info in the query name. Where clause
+#  info will be relatively obvious from the names of
+#  the variables passed in as placeholders to calls to DBI routines
+#  example:
+#    $dbi->selectallsomething('PROGRAM_X_LAST_UPDATED]',($progam _id);
+
+[AGENCY_PROGRAM_X_AGENCY_NAME_AGENCY_ALIAS]
+SELECT 
+  a.agency_name, a.agency_alias, p.* 
+FROM 
+  agency a, program p 
+WHERE 
+  p.program_id = ?
+AND 
+  a.agency_id = p.agency_id
+  
+[AGENCY_X_ALL]
 SELECT 
          * 
   FROM 
        agency
 
-[AGENCY_ALL_PUBLIC]
+[AGENCY_X_ALL_PUBLIC]
 SELECT
   agency_id, last_updated, hidden, 
   agency_name, agency_alias, address1, 
@@ -27,27 +58,73 @@
   staff_internet_access, contact_email_available, tty_tdd
  FROM 
        agency
+      
+[AGENCY_X_WEBSITE]       
+SELECT
+  website 
+FROM 
+  agency 
+WHERE 
+  agency_id = ?
 
-[HEADING_NAMES_WITH_PROGRAMS]
-  SELECT DISTINCT
-      hc.heading_name 
+[CATEGORY_PROGRAM_VIEW_HEADING_CATEGORY_X_ID_NAME_COUNT]
+SELECT
+  c.category_id, c.category_name, c.program_count
+FROM
+  cats_with_visible_programs_view c, heading_category hc
+WHERE
+  c.category_id = hc.category_id
+AND
+  hc.heading_name = ?
+ORDER BY
+  c.category_name
+  
+[CATEGORY_X_CATEGORY_NAME]
+SELECT 
+   category_name 
+FROM 
+   category 
+WHERE 
+   category_id = ?
+  
+[PROGRAM_AGENCY_PROGRAM_CATEGORY_X_AGENCY_NAME_ID_PROGRAM_NAME]
+    SELECT 
+          a.agency_name, p.program_id, p.program_name,
+	  p.program_alias, p.address1, p.address2, 
+	  p.city, p.state, p.zip, p.main_phone, 
+          p.short_program_description 
     FROM 
-      heading_category hc,
-      program_category pc
+	  program p, agency a, program_category pc 
     WHERE 
-      hc.category_id =pc.category_id
+	  p.program_id = pc.program_id 
+          AND pc.category_id = ?
+          AND a.agency_id = p.agency_id 
+          AND p.hidden_reason IS NULL
+    ORDER BY
+          p.program_name
 
-[PROGRAM_LAST_UPDATED_BY_PROGRAM_ID]
+[PROGRAM_CATEGORY_HEADING_CATEGORY_X_HEADING_NAME]
+SELECT DISTINCT
+  hc.heading_name 
+FROM 
+  heading_category hc,
+  program_category pc
+WHERE 
+ hc.category_id =pc.category_id
+ 
+[PROGRAM_X_LAST_UPDATED]
 SELECT 
   last_updated 
 FROM 
   program 
 WHERE program_id = ?
 
-[PROGRAM_WEBSITE_BY_PROGRAM_ID]
+
+[PROGRAM_X_WEBSITE]
 SELECT 
   website 
 FROM 
   program 
 WHERE 
-  program_id = ?
+  program_id = ?   
+  

=== modified file 'app-mvhub/t/sql_lib_sanity.t'
--- app-mvhub/t/sql_lib_sanity.t	2009-12-18 18:09:42 +0000
+++ app-mvhub/t/sql_lib_sanity.t	2010-03-17 14:09:50 +0000
@@ -37,8 +37,16 @@
 
 sub get_test_placeholders {
     my %data = (
-        'PROGRAM_WEBSITE_BY_PROGRAM_ID'      => [509548],
-        'PROGRAM_LAST_UPDATED_BY_PROGRAM_ID' => [509548],
+        'AGENCY_X_WEBSITE'                          => [103553],
+        'AGENCY_PROGRAM_X_AGENCY_NAME_AGENCY_ALIAS' => [510296],
+        'CATEGORY_PROGRAM_VIEW_HEADING_CATEGORY_X_ID_NAME_COUNT' =>
+            ['Arts/Culture/Entertainment'],
+        'CATEGORY_X_CATEGORY_NAME' => [800363],
+        'PROGRAM_AGENCY_PROGRAM_CATEGORY_X_AGENCY_NAME_ID_PROGRAM_NAME' =>
+            [800363],
+        'PROGRAM_X_WEBSITE'      => [509548],
+        'PROGRAM_X_LAST_UPDATED' => [509548],
+
     );
     return \%data;
 }
@@ -79,7 +87,8 @@
     foreach my $statement_name ( $sql_lib->elements() ) {
         my $sql = $sql_lib->retr($statement_name);
         next if $sql !~ /\?/xmgs;
-
+        die "$statement_name is not in our test data"
+            if not defined $$placeholders_href{$statement_name};
         my $placeholders_aref = $$placeholders_href{$statement_name};
         ok( $dbh->do( $sql, {}, @$placeholders_aref ),
             "do: $statement_name" );

=== modified file 'lib-mvhub/lib/MVHub/Guide.pm'
--- lib-mvhub/lib/MVHub/Guide.pm	2009-12-30 01:47:14 +0000
+++ lib-mvhub/lib/MVHub/Guide.pm	2010-03-17 14:09:50 +0000
@@ -73,7 +73,8 @@
     my $self = shift;
 
     my $dbh = $self->dbh();
-    my $sql = $self->retr_select_sql('HEADING_NAMES_WITH_PROGRAMS');
+    my $sql = $self->retr_select_sql(
+        'PROGRAM_CATEGORY_HEADING_CATEGORY_X_HEADING_NAME');
 
     my $headings_aref = $dbh->selectcol_arrayref($sql);
     my $html          = << "HTML";
@@ -116,15 +117,11 @@
     }
 
     my $dbh = $self->dbh();
-    my $sql
-        = "SELECT c.category_id, c.category_name, c.program_count "
-        . "FROM cats_with_visible_programs_view c, heading_category hc "
-        . "WHERE c.category_id = hc.category_id "
-        . "AND hc.heading_name = "
-        . $dbh->quote($heading_name)
-        . " ORDER BY c.category_name";
 
-    my $categories_aref = $dbh->selectall_arrayref( $sql, { Slice => {} } );
+    my $sql = $self->retr_select_sql(
+        "CATEGORY_PROGRAM_VIEW_HEADING_CATEGORY_X_ID_NAME_COUNT");
+    my $categories_aref
+        = $dbh->selectall_arrayref( $sql, { Slice => {} }, $heading_name );
 
     # 0 rows returned might or might not be a bug. So we don't test for it.
 
@@ -185,11 +182,11 @@
     # return an error unless one of these is defined.
     # use program_id if both are defined.
     if ( defined $program_id ) {
-        $sql = "SELECT website FROM program WHERE program_id = ?";
+        $sql = $self->retr_select_sql("PROGRAM_X_WEBSITE");
         $url_aref = $dbh->selectrow_arrayref( $sql, undef, $program_id );
     }
     elsif ( defined $agency_id ) {
-        $sql = "SELECT website FROM agency WHERE agency_id = ?";
+        $sql = $self->retr_select_sql("AGENCY_X_WEBSITE");
         $url_aref = $dbh->selectrow_arrayref( $sql, undef, $agency_id );
     }
     else {
@@ -342,25 +339,11 @@
 indicate whether the source is a bot.'
     );
 
-    my $dbh    = $self->dbh();
-    my $cat_id = $dbh->quote($category_id);
-    my $sql    = << "SQL";
-      SELECT 
-	  a.agency_name, p.program_id, p.program_name,
-	  p.program_alias, p.address1, p.address2, 
-	  p.city, p.state, p.zip, p.main_phone, 
-          p.short_program_description 
-       FROM 
-	  program p, agency a, program_category pc 
-        WHERE 
-	  p.program_id = pc.program_id 
-          AND pc.category_id = $cat_id
-          AND a.agency_id = p.agency_id 
-          AND p.hidden_reason IS NULL
-	  ORDER BY p.program_name;
-SQL
-
-    my $programs_aref = $dbh->selectall_arrayref( $sql, { Slice => {} } );
+    my $dbh = $self->dbh();
+    my $sql = $self->retr_select_sql(
+        "PROGRAM_AGENCY_PROGRAM_CATEGORY_X_AGENCY_NAME_ID_PROGRAM_NAME");
+    my $programs_aref
+        = $dbh->selectall_arrayref( $sql, { Slice => {} }, $category_id );
     $programs_aref = _add_program_urls_to($programs_aref);
 
     # We should never have been called if there aren't any programs for this
@@ -392,11 +375,10 @@
     $tmpl->param( $PR_PROGRAMS_LOOP_TAG => $programs_aref );
 
     # Get the category name to show off in the result page.
-    my $sql2
-        = 'SELECT category_name FROM category '
-        . 'WHERE category_id = '
-        . $dbh->quote($category_id);
-    my $category_name = @{ $dbh->selectrow_arrayref($sql2) }[0];
+
+    my $sql2 = $self->retr_select_sql("CATEGORY_X_CATEGORY_NAME");
+    my $category_name
+        = @{ $dbh->selectrow_arrayref( $sql2, undef, $category_id ) }[0];
 
     $tmpl->param( $PR_PROGRAMS_LOOP_TAG => $programs_aref );
     $tmpl->param( $PR_CRITERIA_TAG      => $category_name );
@@ -487,12 +469,9 @@
 
     my $dbh = $self->dbh();
     my $sql
-        = "SELECT a.agency_name, a.agency_alias, p.* FROM agency a, program p "
-        . "WHERE p.program_id = "
-        . $dbh->quote($program_id)
-        . " AND a.agency_id = p.agency_id";
-
-    my $programs_aref = $dbh->selectall_arrayref( $sql, { Slice => {} } );
+        = $self->retr_select_sql("AGENCY_PROGRAM_X_AGENCY_NAME_AGENCY_ALIAS");
+    my $programs_aref
+        = $dbh->selectall_arrayref( $sql, { Slice => {} }, $program_id );
 
     exit_if_entity_count_not_one( 'program', scalar @$programs_aref );
 

=== modified file 'lib-mvhub/lib/MVHub/Utils/DB.pm'
--- lib-mvhub/lib/MVHub/Utils/DB.pm	2010-01-25 21:33:33 +0000
+++ lib-mvhub/lib/MVHub/Utils/DB.pm	2010-03-17 14:33:14 +0000
@@ -6,7 +6,10 @@
 
 use Carp;
 use DBI;
+
 use MVHub::Utils qw/assert undelimit_field /;
+use SQL::Library;
+
 use base 'Exporter';
 
 our @EXPORT_OK = qw(
@@ -158,7 +161,9 @@
         = "/var/www/mvhub/$ENV{USER}/link-to-live-code/app-mvhub/conf/sql_select.lib";
     my $sql_lib = new SQL::Library { lib => $file };
 
-    return $sql_lib->retr($statement_name);
+    my $result = $sql_lib->retr($statement_name)
+        or croak "Couldn't get sql for $statement_name";
+    return $result;
 }
 
 #################################

=== modified file 'lib-mvhub/t/perltidy.t'
--- lib-mvhub/t/perltidy.t	2009-09-15 01:12:17 +0000
+++ lib-mvhub/t/perltidy.t	2010-03-12 15:21:20 +0000
@@ -43,7 +43,7 @@
 
             );
 
-            if (!ok(no_difference( $file, $destination ),
+            if (!ok(TestHelper::no_difference( $file, $destination ),
                     "$file is all perltidy "
                 )
                 )