commit 5212ea2066ee7310e1dbaefa929dd7f622e76818
parent 84c33d85a4f8934e8dc00be75d1413d9e003b2d4
Author: Kyle Milz <kyle@getaddrinfo.net>
Date:   Sun, 26 Apr 2015 01:29:43 -0600
pc_html: collect stale clauses, rework new/updated
Diffstat:
| M | pc_html |  |  | 60 | ++++++++++++++++++++++++++++-------------------------------- | 
1 file changed, 28 insertions(+), 32 deletions(-)
diff --git a/pc_html b/pc_html
@@ -30,18 +30,20 @@ my $config = {
 };
 my $www = Template->new($config) || die Template->error(), "\n";
 
+my $and_stale = $args{a} ? "" : "and products.svg_stale = 1";
+my $where_stale = $args{a} ? "" : "where svg_stale = 1";
+
 #
 # manufacturers
 #
-my $stale_clause = $args{a} ? "" : "and products.svg_stale = 1";
 my $stale_list = qq{select distinct prices.manufacturer from prices, products where
 	prices.manufacturer = products.manufacturer and
-	prices.part_num = products.part_num $stale_clause};
+	prices.part_num = products.part_num $and_stale};
 
 my $types = qq{select distinct products.type from prices, products where
 	prices.manufacturer = products.manufacturer and
 	prices.part_num = products.part_num and prices.manufacturer = ?
-	$stale_clause};
+	$and_stale};
 
 my $products_fine = qq{select distinct manufacturer, part_num from products
 	where type = ? and manufacturer = ?};
@@ -58,26 +60,22 @@ generate_folder($stale_list, $types, $products_fine, "Manufacturers", $coarse, $
 #
 # retailers
 #
-if ($args{a}) {
-	$stale_list = "select distinct retailer from prices";
-} else {
-	$stale_list = qq{select distinct prices.retailer from prices, products where
-		prices.manufacturer = products.manufacturer and
-		prices.part_num = products.part_num and products.svg_stale = 1};
-}
+$stale_list = qq{select distinct prices.retailer from prices, products where
+	prices.manufacturer = products.manufacturer and
+	prices.part_num = products.part_num $and_stale};
 
-$stale_clause = $args{a} ? "" : "and products.svg_stale = 1";
 $types = qq{select distinct products.type from prices, products where
 	prices.manufacturer = products.manufacturer and
 	prices.part_num = products.part_num and prices.retailer = ?
-	$stale_clause};
+	$and_stale};
 
 $products_fine = qq{select distinct prices.manufacturer, prices.part_num
 	from prices, products where prices.part_num = products.part_num and
 	products.manufacturer = prices.manufacturer and products.type = ? and
 	prices.retailer = ?};
 
-$summary = qq{select manufacturer, count(*) from prices where retailer = ? group by manufacturer};
+$summary = qq{select manufacturer, count(*) from prices where retailer = ?
+	group by manufacturer};
 
 $coarse_list = qq{select prices.retailer, count(distinct products.part_num) as
 	count, products.type from products, prices where prices.manufacturer =
@@ -91,10 +89,9 @@ generate_folder($stale_list, $types, $products_fine, "Retailers", $coarse, $summ
 #
 # product types
 #
-$stale_clause = $args{a} ? "" : "and products.svg_stale = 1";
 $stale_list = qq{select distinct products.type from products, prices where
 	products.manufacturer = prices.manufacturer and
-	products.part_num = prices.part_num $stale_clause};
+	products.part_num = prices.part_num $and_stale};
 
 $types = qq{select distinct products.manufacturer from prices, products where
 	prices.manufacturer = products.manufacturer and
@@ -120,10 +117,8 @@ generate_folder($stale_list, $types, $products_fine, "Types", $coarse, $summary)
 #
 print "info: products: " if ($args{v});
 
-$stale_clause = $args{a} ? "" : "where svg_stale = 1";
-my $sql = "select * from products $stale_clause";
+my $sql = "select * from products $where_stale";
 my $products = $dbh->selectall_hashref($sql, "part_num");
-
 while (my ($part_num, $row) = each %$products) {
 	my $part_link = linkify($part_num);
 	my $manuf_link = linkify($row->{manufacturer});
@@ -139,32 +134,30 @@ print scalar(keys %$products) . " processed\n" if ($args{v});
 #
 # index
 #
-$sql = "select manufacturer, part_num from products where first_seen > ? limit 10";
-my $new = $dbh->selectall_arrayref($sql, undef, time - (7 * 24 * 60 * 60));
+print "info: index: ";
 
-$sql = "select manufacturer, part_num from products where last_scraped > ? order by last_scraped desc";
-my $upd = $dbh->selectall_arrayref($sql, undef, time - (0.5 * 60 * 60));
+$sql = "select manufacturer, part_num from products order by first_seen desc limit 10";
+my $new = $dbh->selectall_arrayref($sql);
 
-my $cutoff = time - (30 * 24 * 60 * 60);
-$sql = "select count(*), count(distinct manufacturer) from products where last_seen > $cutoff";
-my ($p, $m) = $dbh->selectrow_array($sql);
+$sql = qq{select manufacturer, part_num from products order by last_scraped desc limit 5};
+my $upd = $dbh->selectall_arrayref($sql);
+
+$sql = "select count(*), count(distinct manufacturer) from products where last_seen > ?";
+my ($p, $m) = $dbh->selectrow_array($sql, undef, time - (30 * 24 * 60 * 60));
 
 $sql = "select count(*) from retailers";
 my ($r) = $dbh->selectrow_array($sql);
 
 my $vars = { nret => $r, nmanuf => $m, nprod => $p, news => $new, upds => $upd };
-print "info: index: $p products, $m manufacturers, $r retailers\n" if ($args{v});
 $www->process("index.tt", $vars, "index.html") or die $www->error(), "\n";
 
+print "$p products, $m manufacturers, $r retailers\n" if ($args{v});
+
 #
 # svg
 #
 print "info: svg:  " if ($args{v});
 
-my ($left, $center, $right, $top, $middle, $bottom) = (3, 957, 40, 15, 150, 20);
-my $width = $right + $center + $left;
-my $height = $top + $middle + $bottom;
-
 my @series_keys = ("retailer", "date");
 $sql = "select retailer, date, price from prices where manufacturer = ? and
 	part_num = ?";
@@ -179,8 +172,7 @@ my $retailer_info = $dbh->selectall_hashref($sql, "name");
 
 my ($total, $rendered) = (0, 0);
 
-my $where_clause = $args{a} ? "" : "where svg_stale = 1";
-my $parts_sql = "select manufacturer, part_num from products $where_clause";
+my $parts_sql = "select manufacturer, part_num from products $where_stale";
 for (@{$dbh->selectall_arrayref($parts_sql)}) {
 	my ($manufacturer, $part_num) = @$_;
 
@@ -306,6 +298,10 @@ sub make_svg
 	my $part_num = shift;
 	my $retailer_info = shift;
 
+	my ($left, $center, $right, $top, $middle, $bottom) = (3, 957, 40, 15, 150, 20);
+	my $width = $right + $center + $left;
+	my $height = $top + $middle + $bottom;
+
 	$y_max = ceil($y_max / 100) * 100;
 	$y_min = floor($y_min / 100) * 100;