Apache-JAF

 view release on metacpan or  search on metacpan

lib/JAF/DBI.pm  view on Meta::CPAN


sub _update_sql {
  my ($self, $options) = @_;
  
  my $cols = $options->{cols} || $self->{cols};
  my $criteria = $options->{criteria} || $self->{key};
  
  return "update $self->{table} set ".(join ',', map {"$_ = ?"} @$cols)." where ".(ref $criteria eq 'ARRAY' ? join ' and ', map {"$_ = ?"} @$criteria : "$criteria = ?");
}

sub update { 
  my ($self, $params, $options) = @_;
  
  $options->{criteria} ||= $self->{key};

  my @cols = $options && $options->{cols} ? @{$options->{cols}} : @{$self->{cols}};
  @cols = grep {exists $params->{$_} && (!ref $self->{key} || $self->{key} ne $_)} @cols;
  my $sql = $options->{sql} || $self->_update_sql({%$options, cols => \@cols});

  my $return = $self->{dbh}->do($sql, undef, (map {$params->{$_}} @cols), ref ($options->{criteria}) eq 'ARRAY' ? map {$params->{$_}} @{$options->{criteria}} : $params->{$options->{criteria}});
  $return ? $self->message(defined $options->{message} ? $options->{message} : $self->{update_message}) : $self->error($self->{dbh}->errstr());

 view all matches for this distribution
 view release on metacpan -  search on metacpan

( run in 0.501 second using v1.00-cache-2.02-grep-82fe00e-cpan-1310916c57ae )