cvsuser 05/04/25 09:18:31
Modified: App-Repository/lib/App Repository.pm
Log:
fix set_rows to work (with create option)
Revision Changes Path
1.20 +9 -5 p5ee/App-Repository/lib/App/Repository.pm
Index: Repository.pm
===================================================================
RCS file: /cvs/public/p5ee/App-Repository/lib/App/Repository.pm,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- Repository.pm 31 Jan 2005 20:50:16 -0000 1.19
+++ Repository.pm 25 Apr 2005 16:18:31 -0000 1.20
@@ -16,7 +16,7 @@
=head1 NAME
-App::Repository - Interface for data persistence
+App::Repository - a logical data access layer (works with App::Context),
enabling an application to store and retrieve object data, relational data, and
scalar data to any data repository such as databases, file systems, remote web
sites, etc.
=head1 SYNOPSIS
@@ -1382,12 +1382,12 @@
sub _set_rows {
&App::sub_entry if ($App::trace);
my ($self, $table, $params, $cols, $rows, $options) = @_;
- $params = $self->_params_to_hashref($table, $params) if (ref($params) ne
"HASH");
+ $params = $self->_params_to_hashref($table, $params) if ($params &&
ref($params) ne "HASH");
my $tabledef = $self->{table}{$table};
my ($primary_key, @keycolidx, $keypos, %keypos, $keys_supplied);
- my ($row, $colidx, $nrows);
+ my ($row, $colidx, $nrows, $success);
$nrows = 0;
if (! defined $params) {
$primary_key = $tabledef->{primary_key};
@@ -1405,7 +1405,11 @@
}
die "Tried to set_rows() and the primary key is not among the
columns" if ($keys_supplied != $#$primary_key+1);
foreach $row (@$rows) {
- $nrows += $self->_update($table, $cols, $row, [EMAIL PROTECTED]);
+ $success = $self->_update($table, [EMAIL PROTECTED], $cols,
$row, $options);
+ if ($success == 0 && $options->{create}) {
+ $success = $self->_insert_row($table, $cols, $row, $options);
+ }
+ $nrows += $success;
}
}
elsif (ref($params) eq "ARRAY") {