- Update indentation (again) to be consistent with code
[dbsrgits/DBIx-Class.git] / lib / DBIx / Class / Row.pm
index fc4a072..b64711e 100644 (file)
@@ -53,7 +53,8 @@ sub insert {
   my ($self) = @_;
   return $self if $self->in_storage;
   #use Data::Dumper; warn Dumper($self);
-  $self->storage->insert($self->_table_name, { $self->get_columns });
+  $self->result_source->storage->insert(
+    $self->_table_name, { $self->get_columns });
   $self->in_storage(1);
   $self->{_dirty_columns} = {};
   return $self;
@@ -88,8 +89,8 @@ sub update {
   $self->throw( "Not in database" ) unless $self->in_storage;
   my %to_update = $self->get_dirty_columns;
   return -1 unless keys %to_update;
-  my $rows = $self->storage->update($self->result_source->from, \%to_update,
-                                      $self->ident_condition);
+  my $rows = $self->result_source->storage->update(
+               $self->result_source->from, \%to_update, $self->ident_condition);
   if ($rows == 0) {
     $self->throw( "Can't update ${self}: row not found" );
   } elsif ($rows > 1) {
@@ -114,7 +115,8 @@ sub delete {
   if (ref $self) {
     $self->throw( "Not in database" ) unless $self->in_storage;
     #warn $self->_ident_cond.' '.join(', ', $self->_ident_values);
-    $self->storage->delete($self->result_source->from, $self->ident_condition);
+    $self->result_source->storage->delete(
+      $self->result_source->from, $self->ident_condition);
     $self->in_storage(undef);
     #$self->store_column($_ => undef) for $self->primary_columns;
       # Should probably also arrange to trash PK if auto
@@ -245,11 +247,13 @@ Called by ResultSet to inflate a result from storage
 sub inflate_result {
   my ($class, $me, $prefetch) = @_;
   #use Data::Dumper; print Dumper(@_);
-  my $new = bless({ _column_data => $me }, ref $class || $class);
-  $new->in_storage(1);
+  my $new = bless({ _column_data => $me, _in_storage => 1 },
+                    ref $class || $class);
+  my $schema;
   PRE: foreach my $pre (keys %{$prefetch||{}}) {
     my $rel_obj = $class->_relationships->{$pre};
-    my $pre_class = $class->resolve_class($rel_obj->{class});
+    $schema ||= $new->result_source->schema;
+    my $pre_class = $schema->class($rel_obj->{class});
     my $fetched = $pre_class->inflate_result(@{$prefetch->{$pre}});
     $class->throw("No accessor for prefetched $pre")
       unless defined $rel_obj->{attrs}{accessor};