package UpdateChecker::DB; use Carp (); use base qw/UpdateChecker/; use Data::Dumper (); $UpdateChecker::DB::VERSION = 0.01; sub new{ my $class = shift; ref $class and $class = ref $class; my($data, %options) = @_; my $self = $class->SUPER::new($data); if($self->{dbh} = $options{dbh}){ ref $self->{dbh} or Carp::croak("not database handle"); } return $self; } sub dbh{ my $self = shift; return $self->{dbh}; } sub _get_contents{ my $self = shift; my $target = $self->target; my $sql = $self->Data->target_location; my $dbh = $self->dbh or Carp::croak('must set dbh before'); eval{ if(my $code = $self->db_code($target)){ my($fail, $result) = $code->($dbh, $sql); return $result unless $fail; $self->_fail($fail); return; }else{ my $arrayref; eval{ my $sth = $dbh->prepare($sql); $sth->execute(); $arrayref = $sth->fetchall_arrayref; }; ($self->_fail($@), return) if $@; return Data::Dumper::Dumper($arrayref); } } } #sub arg{ # my $self = shift; # my $target = shift || $self->target or Carp::croak("must set target"); # my $arg = $self->target_data->{$target}->{db_argv} || {}; # return wantarray ? @$arg : $arg; #} sub db_code{ my $self = shift; my $target = shift || $self->target or Carp::croak("must set target"); return $self->target_data->{$target}->{db_code} || undef; } 1;