DBR
view release on metacpan or search on metacpan
lib/DBR/Interface/DBRv1.pm view on Meta::CPAN
my $sth = $query->run;
$sth->execute() or croak ('failed to execute sth');
if ($params{-arrayref}) {
return $sth->fetchall_arrayref(); # ->finish is automatic
} elsif ($params{-keycol}) {
return $sth->fetchall_hashref($params{-keycol});
} elsif ($params{-single}) {
my $row = $sth->fetchrow_hashref();
$sth->finish;
return $row || 0;
} else {
return $sth->fetchall_arrayref({}); # ->finish is automatic
}
}
}
sub insert {
my $self = shift;
my %params = @_;
my $table = $params{-table} || $params{-insert};
my $fields = $params{-fields};
return $self->_error('No -table parameter specified') unless $table && $table =~ /^[A-Za-z0-9_-]+$/;
return $self->_error('No proper -fields parameter specified') unless ref($fields) eq 'HASH';
my $Qtable = DBR::Config::Table::Anon->new(
session => $self->{session},
name => $table,
) or return $self->_error('Failed to create table object');
my @sets;
foreach my $field (keys %$fields){
my $value = $fields->{$field};
my $fieldobj = DBR::Config::Field::Anon->new(
session => $self->{session},
name => $field
) or return $self->_error('Failed to create field object');
my $valobj = $self->_value($value) or return $self->_error('_value failed');
my $set = DBR::Query::Part::Set->new($fieldobj,$valobj) or return $self->_error('failed to create set object');
push @sets, $set;
}
my $query = DBR::Query::Insert->new(
instance => $self->{instance},
session => $self->{session},
sets => \@sets,
quiet_error => $params{-quiet} ? 1:0,
tables => $Qtable,
) or return $self->_error('failed to create query object');
return $query->run();
}
sub update {
my $self = shift;
my %params = @_;
my $table = $params{-table} || $params{-update};
my $fields = $params{-fields};
return $self->_error('No -table parameter specified') unless $table =~ /^[A-Za-z0-9_-]+$/;
return $self->_error('No proper -fields parameter specified') unless ref($fields) eq 'HASH';
my $Qtable = DBR::Config::Table::Anon->new(
session => $self->{session},
name => $table,
) or return $self->_error('Failed to create table object');
my $where;
if($params{-where}){
$where = $self->_where($params{-where}) or return $self->_error('failed to prep where');
}else{
return $self->_error('-where hashref/arrayref must be specified');
}
my @sets;
foreach my $field (keys %$fields){
my $value = $fields->{$field};
my $fieldobj = DBR::Config::Field::Anon->new(
session => $self->{session},
name => $field
) or return $self->_error('Failed to create field object');
my $valobj = $self->_value($value) or return $self->_error('_value failed');
my $set = DBR::Query::Part::Set->new($fieldobj,$valobj) or return $self->_error('failed to create set object');
push @sets, $set;
}
my $query = DBR::Query::Update->new(
instance => $self->{instance},
session => $self->{session},
sets => \@sets,
tables => $Qtable,
where => $where,
quiet_error => $params{-quiet} ? 1:0,
) or return $self->_error('failed to create query object');
return $query->run();
}
sub delete {
my $self = shift;
my %params = @_;
my $table = $params{-table} || $params{-delete};
return $self->_error('No -table parameter specified') unless $table =~ /^[A-Za-z0-9_-]+$/;
my $Qtable = DBR::Config::Table::Anon->new(
session => $self->{session},
( run in 3.070 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )