[freeside-commits] freeside/FS/FS cust_pkg_reason.pm, 1.1.2.4, 1.1.2.5

Ivan,,, ivan at wavetail.420.am
Sun Mar 15 12:42:42 PDT 2009


Update of /home/cvs/cvsroot/freeside/FS/FS
In directory wavetail.420.am:/tmp/cvs-serv31999

Modified Files:
      Tag: FREESIDE_1_7_BRANCH
	cust_pkg_reason.pm 
Log Message:
should give better performance if we search for what we want instead of using a string match

Index: cust_pkg_reason.pm
===================================================================
RCS file: /home/cvs/cvsroot/freeside/FS/FS/cust_pkg_reason.pm,v
retrieving revision 1.1.2.4
retrieving revision 1.1.2.5
diff -u -d -r1.1.2.4 -r1.1.2.5
--- cust_pkg_reason.pm	12 Mar 2009 01:14:57 -0000	1.1.2.4
+++ cust_pkg_reason.pm	15 Mar 2009 19:42:40 -0000	1.1.2.5
@@ -134,11 +134,17 @@
 #
 # Used by FS::Upgrade to migrate to a new database.
 
+use FS::h_cust_pkg;
+use FS::h_cust_pkg_reason;
+use FS::Schema qw(dbdef);
+
 sub _upgrade_data { # class method
   my ($class, %opts) = @_;
 
-  my $test_cust_pkg_reason = new FS::cust_pkg_reason;
-  return '' unless $test_cust_pkg_reason->dbdef_table->column('action');
+  return '' unless dbdef->table('cust_pkg_reason')->column('action');
+
+  my $action_replace =
+    " AND ( history_action = 'replace_old' OR history_action = 'replace_new' )";
 
   my $count = 0;
   my @unmigrated = qsearch('cust_pkg_reason', { 'action' => '' } ); 
@@ -153,27 +159,24 @@
     
     next unless scalar(@history_cust_pkg_reason) == 1;
 
-    my %action_value = ( op    => 'LIKE',
-                         value => 'replace_%',
-                       );
     my $hashref = { pkgnum => $_->pkgnum,
                     history_date   => $history_cust_pkg_reason[0]->history_date,
-                    history_action => { %action_value },
                   };
 
-    my @history = qsearch({ table    => 'h_cust_pkg',
-                            hashref  => $hashref,
-                            order_by => 'ORDER BY history_action',
+    my @history = qsearch({ table     => 'h_cust_pkg',
+                            hashref   => $hashref,
+                            extra_sql => $action_replace,
+                            order_by  => 'ORDER BY history_action',
                          });
 
     my $fuzz = 0;
     while (scalar(@history) < 2 && $fuzz < 3) {
       $hashref->{history_date}++;
-      $hashref->{history_action} = { %action_value }; # qsearch distorts this!
       $fuzz++;
-      push @history, qsearch({ table    => 'h_cust_pkg',
-                               hashref  => $hashref,
-                               order_by => 'ORDER BY history_action',
+      push @history, qsearch({ table     => 'h_cust_pkg',
+                               hashref   => $hashref,
+                               extra_sql => $action_replace,
+                               order_by  => 'ORDER BY history_action',
                             });
     }
 
@@ -231,26 +234,23 @@
       @FS::h_cust_pkg::ISA = qw( FS::h_Common FS::cust_pkg );
       sub FS::h_cust_pkg::table { 'h_cust_pkg' };
 
-      my %action_value = ( op    => 'LIKE',
-                           value => 'replace_%',
-                         );
       my $hashref = { pkgnum => $_->pkgnum,
                       history_date   => $_->date,
-                      history_action => { %action_value },
                     };
 
-      my @history = qsearch({ table    => 'h_cust_pkg',
-                              hashref  => $hashref,
-                              order_by => 'ORDER BY history_action',
+      my @history = qsearch({ table     => 'h_cust_pkg',
+                              hashref   => $hashref,
+                              extra_sql => $action_replace,
+                              order_by  => 'ORDER BY history_action',
                            });
 
       my $fuzz = 0;
       while (scalar(@history) < 2 && $fuzz < 3) {
         $hashref->{history_date}++;
-        $hashref->{history_action} = { %action_value }; # qsearch distorts this!
         $fuzz++;
         push @history, qsearch({ table    => 'h_cust_pkg',
                                  hashref  => $hashref,
+                                 extra_sql => $action_replace,
                                  order_by => 'ORDER BY history_action',
                               });
       }



More information about the freeside-commits mailing list