pricecharts

track prices of consumer electronics
Log | Files | Refs | README

commit 9dc0054ec0f75ff4016d44b8fdcb563349fad931
parent 1860b3e1ea666b85e7f2aef3753aa2d81cd88593
Author: kyle <kyle@getaddrinfo.net>
Date:   Sun,  6 Mar 2016 15:20:10 -0700

database: add common insert_price function

Diffstat:
MPS/Database.pm | 13+++++++++++++
MPS/LondonDrugs.pm | 11+++--------
MPS/MemoryExpress.pm | 11+++--------
3 files changed, 19 insertions(+), 16 deletions(-)

diff --git a/PS/Database.pm b/PS/Database.pm @@ -30,12 +30,25 @@ sub new { $dbh->do("PRAGMA foreign_keys = ON"); create_tables($dbh); + + my $sql = qq{insert into prices(date, manufacturer, part_num, retailer, + price, duration) values (?, ?, ?, ?, ?, ?)}; + $self->{insert_price} = $dbh->prepare($sql); + $dbh->{AutoCommit} = 1; $logger->debug("opened $db_dir/db\n"); return $self; } +sub insert_price { + my ($self, @args) = @_; + + $self->{dbh}->begin_work; + $self->{insert_price}->execute(time, @args); + $self->{dbh}->commit; +} + sub create_tables { my ($dbh) = @_; diff --git a/PS/LondonDrugs.pm b/PS/LondonDrugs.pm @@ -120,6 +120,8 @@ sub find_product_page { sub scrape { my ($self, $manufacturer, $part_num) = @_; my $ua = $self->{ua}; + my $db = $self->{db}; + my $start = time; my $search = $self->create_search($manufacturer, $part_num); my $resp = $ua->get_dom($search); @@ -133,14 +135,7 @@ sub scrape { my ($price) = $self->scrape_price($resp); my $desc = $self->scrape_description($resp); - my $sql = qq{insert into prices(date, manufacturer, part_num, retailer, - price, duration) values (?, ?, ?, ?, ?, ?)}; - my $dbh = $self->{db}->{dbh}; - my $prices_sth = $dbh->prepare($sql); - - $dbh->begin_work; - $prices_sth->execute(time, $manufacturer, $part_num, "London Drugs", $price, 100); - $dbh->commit; + $db->insert_price($manufacturer, $part_num, "London Drugs", $price, time - $start); $logger->debug("scrape_price(): added price \$$price\n"); return $price; diff --git a/PS/MemoryExpress.pm b/PS/MemoryExpress.pm @@ -132,6 +132,8 @@ sub find_product_page { sub scrape { my ($self, $manufacturer, $part_num) = @_; my $ua = $self->{ua}; + my $db = $self->{db}; + my $start = time; my $search = $self->create_search($manufacturer, $part_num); return unless ($search); @@ -147,14 +149,7 @@ sub scrape { my ($price) = $self->scrape_price($resp); my $desc = $self->scrape_description($resp); - my $sql = qq{insert into prices(date, manufacturer, part_num, retailer, - price, duration) values (?, ?, ?, ?, ?, ?)}; - my $dbh = $self->{db}->{dbh}; - my $prices_sth = $dbh->prepare($sql); - - $dbh->begin_work; - $prices_sth->execute(time, $manufacturer, $part_num, "Memory Express", $price, 99); - $dbh->commit; + $db->insert_price($manufacturer, $part_num, "Memory Express", $price, time - $start); $logger->debug("scrape_price(): added price \$$price\n"); return $price;