The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w

# Copyright 2008, 2009, 2010, 2014 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 <http://www.gnu.org/licenses/>.

use strict;
use warnings;
use Data::Dumper;
use App::Chart::Database;
use App::Chart::Gtk2::Ex::ListStoreDBISeq;

sub show {
  my ($model) = @_;
  $model->foreach (sub {
                     my ($model, $path, $iter) = @_;
                     my $value = $model->get_value($iter, 0);
                     print $path->to_string," ",
                       defined $value ? $value : 'undef', "\n";
                     return 0; # keep walking
                   });
}

{
  # my $dbh = App::Chart::DBI->instance();
  require DBI;
  unlink ('/tmp/foo.sqdb');
  my $dbh = DBI->connect ("dbi:SQLite:dbname=/tmp/foo.sqdb",
                          '', '', {RaiseError=>1});
  $dbh->{sqlite_unicode} = 1;

  $dbh->do ('CREATE TABLE symlist (
    seq        INT      NOT NULL,
    x          INT,
    key        TEXT,
    name       TEXT,
    condition  TEXT     DEFAULT NULL,
    PRIMARY KEY (x,seq))
');
  $dbh->do ('INSERT INTO symlist (seq,key,x) VALUES (0,\'aaa\',44)');
  $dbh->do ('INSERT INTO symlist (seq,key,x) VALUES (1,\'ccc\',44)');
  $dbh->do ('INSERT INTO symlist (seq,key,x) VALUES (0,\'bbb\',55)');
  $dbh->do ('INSERT INTO symlist (seq,key,x) VALUES (1,\'ddd\',55)');

  my $symlist = App::Chart::Gtk2::Ex::ListStoreDBISeq->new (where => { x => 55},
                                                dbh => $dbh,
                                                table => 'symlist',
                                                columns => ['key']);
  show ($symlist);

  $symlist->remove ($symlist->iter_nth_child(undef,0));
  show ($symlist);

  $symlist->insert (1);
  show ($symlist);

  $symlist->append;
  show ($symlist);

  #   $dbh->do('DELETE FROM symlist WHERE seq=1');
  #   $symlist->append;

  # $dbh->do('DELETE FROM symlist WHERE seq=1');
  # $dbh->do ('INSERT INTO symlist (seq,key,x) VALUES (-1,\'ddd\',55)');
  # $symlist->reread;
  $dbh->do ('UPDATE symlist SET seq=-4-seq');

  $symlist->fixup (verbose => 1);
  show ($symlist);

  exit 0;
}