Changeset 23553
- Timestamp:
- 11/13/08 18:19:29 (5 years ago)
- Location:
- lang/perl/Data-Model/trunk/lib/Data
- Files:
-
- 4 modified
-
Model.pm (modified) (3 diffs)
-
Model/Driver/DBI.pm (modified) (1 diff)
-
Model/Driver/DBI/DBD.pm (modified) (1 diff)
-
Model/Driver/Memory.pm (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
lang/perl/Data-Model/trunk/lib/Data/Model.pm
r23423 r23553 167 167 168 168 sub set { 169 my $self = shift; 170 my $model = shift; 169 shift->_insert_or_replace(0, @_); 170 } 171 172 sub replace { 173 shift->_insert_or_replace(1, @_); 174 } 175 176 sub _insert_or_replace { 177 my $self = shift; 178 my $is_replace = shift; 179 my $model = shift; 171 180 return $self->update($model, @_) if ref($model) && $model->isa('Data::Model::Row'); 172 181 my $schema = $self->get_schema($model); … … 205 214 206 215 local $schema->{schema_obj} = $self; 207 my $result = $schema->{driver}->set( $schema, $key_array => $columns, @_ ); 216 my $method = $is_replace ? 'replace' : 'set'; 217 my $result = $schema->{driver}->$method( $schema, $key_array => $columns, @_ ); 208 218 return unless $result; 209 219 … … 218 228 sub set_multi { 219 229 } 230 220 231 221 232 -
lang/perl/Data-Model/trunk/lib/Data/Model/Driver/DBI.pm
r23428 r23553 136 136 # insert or replace 137 137 sub set { 138 my($self, $schema, $key, $columns, %args) = @_; 138 my $self = shift; 139 $self->_insert_or_replace(0, @_); 140 } 141 142 sub replace { 143 my($self, $schema, $key, $columns, %args) = @_; 144 if ($self->dbd->can_replace) { 145 return $self->_insert_or_replace(1, $schema, $key, $columns, %args); 146 } else { 147 # $self->thx(sub { 148 $self->delete($schema, $key, +{}, %args); 149 return $self->set($schema, $key, $columns, %args); 150 # }); 151 } 152 } 153 154 sub _insert_or_replace { 155 my($self, $is_replace, $schema, $key, $columns, %args) = @_; 156 my $select_or_replace = $is_replace ? 'REPLACE' : 'INSERT'; 139 157 140 158 my $table = $schema->{model}; 141 159 my $cols = [ keys %{ $columns } ]; 142 my $sql = " INSERTINTO $table\n";160 my $sql = "$select_or_replace INTO $table\n"; 143 161 $sql .= '(' . join(', ', @{ $cols }) . ')' . "\n" . 144 162 'VALUES (' . join(', ', ('?') x @{ $cols }) . ')' . "\n"; -
lang/perl/Data-Model/trunk/lib/Data/Model/Driver/DBI/DBD.pm
r23428 r23553 13 13 sub fetch_last_id {} 14 14 sub bind_param_attributes {} 15 sub can_replace { 1 } 15 16 16 17 1; -
lang/perl/Data-Model/trunk/lib/Data/Model/Driver/Memory.pm
r23142 r23553 95 95 my $data = $self->load_data($schema); 96 96 $data->{records}->{$record_id} = $columns; 97 } 98 99 sub replace { 100 my($self, $schema, $key, $columns, %args) = @_; 101 } 102 103 sub update { 104 my($self, $schema, $key, $columns, %args) = @_; 97 105 } 98 106
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)