From 4082d99f96937ee23634130df98a376f1643086b Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Tue, 28 Jul 2009 18:11:19 +0100 Subject: [PATCH] New CommodsDatabase module for broken out DBI stuff --- pctb/CommodsDatabase.pm | 69 +++++++++++++++++++++++++++++++++++++ pctb/db-idempotent-populate | 24 ++++--------- 2 files changed, 75 insertions(+), 18 deletions(-) create mode 100644 pctb/CommodsDatabase.pm diff --git a/pctb/CommodsDatabase.pm b/pctb/CommodsDatabase.pm new file mode 100644 index 0000000..4866c85 --- /dev/null +++ b/pctb/CommodsDatabase.pm @@ -0,0 +1,69 @@ +# This is part of ypp-sc-tools, a set of third-party tools for assisting +# players of Yohoho Puzzle Pirates. +# +# Copyright (C) 2009 Ian Jackson +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# Yohoho and Puzzle Pirates are probably trademarks of Three Rings and +# are used without permission. This program is not endorsed or +# sponsored by Three Rings. + +package CommodsDatabase; + +use strict; +use warnings; + +use DBI; + +use Commods; + +BEGIN { + use Exporter (); + our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS); + $VERSION = 1.00; + @ISA = qw(Exporter); + @EXPORT = qw(&db_setocean &db_connect $dbh + &db_filename &db_doall); + %EXPORT_TAGS = ( ); + + @EXPORT_OK = qw(); +} + +our $dbfn; +our $dbh; + +sub db_setocean ($) { + my ($oceanname) = @_; + $dbfn= "OCEAN-$oceanname.db"; +} +sub db_filename () { + return $dbfn; +} + +sub db_connect () { + $dbh= DBI->connect("dbi:SQLite:$dbfn",'','', + { AutoCommit=>0, + RaiseError=>1, ShowErrorStatement=>1, + unicode=>1 }) + or die "$dbfn $DBI::errstr ?"; +} + +sub db_doall ($) { + foreach my $cmd (split /\;/, $_[0]) { + $dbh->do("$cmd;") if $cmd =~ m/\S/; + } +} + +1; diff --git a/pctb/db-idempotent-populate b/pctb/db-idempotent-populate index 66fd6f5..b7743ed 100755 --- a/pctb/db-idempotent-populate +++ b/pctb/db-idempotent-populate @@ -31,35 +31,23 @@ use strict (qw(vars)); use DBI; use Commods; +use CommodsDatabase; @ARGV==1 or die; my ($oceanname) = @ARGV; -my $dbfn= "OCEAN-$oceanname.db"; - -our $dbh; - -sub dbdoall ($) { - foreach my $cmd (split /\;/, $_[0]) { - $dbh->do("$cmd;") if $cmd =~ m/\S/; - } -} - #---------- setup ---------- parse_masters_ocean($oceanname); our $ocean= $oceans{$oceanname}; -$dbh= DBI->connect("dbi:SQLite:$dbfn",'','', - { AutoCommit=>0, - RaiseError=>1, ShowErrorStatement=>1, - unicode=>1 }) - or die "$dbfn $DBI::errstr ?"; +db_setocean($oceanname); +db_connect(); #---------- schema ---------- foreach my $bs (qw(buy sell)) { - dbdoall(<