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 )