Job-Machine
view release on metacpan or search on metacpan
lib/Job/Machine/DB.pm view on Meta::CPAN
my @c = caller;
print STDERR "File: $c[1] line $c[2]\n";
print STDERR $args{sql}."\n" if($args{sql});
return 0;
}
my $r = $sth->fetchrow_hashref();
$sth->finish();
return ( $r );
}
sub select_all {
my ($self, %args) = @_;
my $sth = $self->dbh->prepare($args{sql}) || return 0;
$self->set_bind_type($sth,$args{data} || []);
unless($sth->execute(@{$args{data}})) {
my @c = caller;
print STDERR "File: $c[1] line $c[2]\n";
print STDERR $args{sql}."\n" if($args{sql});
return 0;
}
my @result;
while( my $r = $sth->fetchrow_hashref) {
push(@result,$r);
}
$sth->finish();
return ( \@result );
}
sub set_bind_type {
my ($self,$sth,$data) = @_;
for my $i (0..scalar(@$data)-1) {
next unless(ref($data->[$i]));
$sth->bind_param($i+1, undef, $data->[$i]->[1]);
$data->[$i] = $data->[$i]->[0];
}
return;
}
sub do {
my ($self, %args) = @_;
my $sth = $self->dbh->prepare($args{sql}) || return 0;
$sth->execute(@{$args{data}});
my $rows = $sth->rows;
$sth->finish();
return $rows;
}
sub insert {
my ($self, %args) = @_;
my $sth = $self->dbh->prepare($args{sql}) || return 0;
$sth->execute(@{$args{data}});
my $retval = $sth->fetch()->[0];
$sth->finish();
return $retval;
}
sub update {
my $self = shift;
$self->do(@_);
return;
}
sub dbh {
return $_[0]->{dbh} || confess "No database handle";
}
sub task_id {
return $_[0]->{task_id} || confess "No task id";
}
sub disconnect {
return $_[0]->{dbh}->disconnect if $_[0]->{dbh};
}
sub DESTROY {
my $self = shift;
$self->disconnect() unless $self->{dbh_inherited};
return;
}
sub where_clause {
my ($self, $where) = @_;
my $where_clause = join(' AND ', ("$_ = ?") x keys %$where);
$where_clause = "WHERE $where_clause" if $where_clause;
return $where_clause, values %$where;
}
sub order_by {
my ($self, $order) = @_;
return unless ref $order eq 'HASH';
my $order_by = join(',', ("$_") x keys %$order);
$order_by = "ORDER BY $order_by" if $order_by;
return $order_by;
}
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
Job::Machine::DB
=head1 VERSION
version 0.26
=head1 NAME
Job::Machine::DB - Database class for Job::Machine
( run in 0.814 second using v1.01-cache-2.11-cpan-df04353d9ac )