#!/usr/bin/perl -w # Copyright 2008, 2009, 2010, 2011, 2012 Kevin Ryde # This file is part of Chart. # # Chart 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, or (at your option) any later version. # # Chart 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 Chart. If not, see . use strict; use warnings; use Data::Dumper; use App::Chart::Database; use App::Chart::DBI; use App::Chart::Download; # uncomment this to run the ### lines use Smart::Comments; { my $dbh = App::Chart::DBI->instance(); my $sth = $dbh->prepare_cached ('SELECT image, error FROM intraday_image WHERE symbol=? AND mode=?'); my $ref; { my $symbol = 'GM'; my $mode = '1d'; $ref = \$symbol; my ($image, $error) = $dbh->selectrow_array ($sth, undef, $symbol, $mode); $sth->finish(); ($image, $error) = $dbh->selectrow_array ($sth, undef, 'BHP.AX', '5d'); $sth->finish(); } Scalar::Util::weaken($ref); ### $ref exit 0; } { my $filename = '/tmp/x.sqdb'; $ENV{'DBI_TRACE'} = '1'; require DBI; my $dbh = DBI->connect ("dbi:SQLite:dbname=$filename", '', '', {RaiseError=>1}); $dbh->func(5_000, 'busy_timeout'); # 90 seconds # $dbh->do ('CREATE TABLE foo (bar TEXT)'); $dbh->begin_work; $dbh->do ("INSERT INTO foo (bar) VALUES ('hello')"); # $dbh->commit; sleep 100; exit 0; } { App::Chart::Download::vacuum (); exit 0; } { my $dbh = App::Chart::DBI->instance(); print $dbh->func('busy_timeout'),"\n"; exit 0; my $sth = $dbh->table_info(undef, 'notesdb', '%', undef); my $aref = $sth->fetchall_arrayref; $sth->finish; print Dumper($aref); exit 0; } # return true if $dbh contains a table called $table sub dbh_table_exists { my ($dbh, $table) = @_; my $sth = $dbh->table_info (undef, undef, $table, undef); my $exists = $sth->fetchrow_arrayref ? 1 : 0; $sth->finish; return $exists; } { my $dbh = App::Chart::DBI->instance(); my @a = $dbh->tables (undef, undef, undef, undef); print Dumper(\@a); my $nbh = $dbh; @a = $nbh->tables (undef, undef, undef, undef); print Dumper(\@a); print "", App::Chart::Database::dbh_table_exists ($dbh, undef, 'daily') ? "yes\n" : "no\n"; print "", App::Chart::Database::dbh_table_exists ($nbh, undef, 'preference') ? "yes\n" : "no\n"; print "", App::Chart::Database::dbh_table_exists ($nbh, 'notesdb', 'preference') ? "yes\n" : "no\n"; exit 0; } { my $dbh = App::Chart::DBI->instance(); print $dbh->{AutoCommit},"\n"; App::Chart::Database::call_with_transaction ($dbh, sub { print "one-a: ", $dbh->{AutoCommit},"\n"; App::Chart::Database::call_with_transaction ($dbh, sub { print "two: ", $dbh->{AutoCommit},"\n"; }); print "one-b: ", $dbh->{AutoCommit},"\n"; }); print $dbh->{AutoCommit},"\n"; exit 0; } { { my $dbh = App::Chart::DBI->instance(); $dbh->do("DELETE FROM extra WHERE symbol='FOO.TEST'"); } App::Chart::Database->write_extra ('FOO.TEST', 'test-key', 123); print App::Chart::Database->read_extra ('FOO.TEST', 'test-key'); App::Chart::Database->write_extra ('FOO.TEST', 'test-key', 456); print App::Chart::Database->read_extra ('FOO.TEST', 'test-key'); App::Chart::Database->write_extra ('FOO.TEST', 'test-key', 789); print App::Chart::Database->read_extra ('FOO.TEST', 'test-key'); exit 0; } { foreach ('BHP.AX', 'IPG.AX', 'FPA.NZ', 'TEL.NZ') { print App::Chart::Database->symbol_is_historical ($_),"\n"; } exit 0; } { my $series = App::Chart::Database::read_series ('BHP.AX'); print Dumper (\$series); exit 0; } { my $dbh = App::Chart::DBI->instance(); exit 0; } { App::Chart::Database->add_symbol ('BHP.AX'); exit 0; }