keys %{$self->{_dirty_columns}};
}
+=head2 make_column_dirty
+
+Marks a column dirty regardless if it has really changed. Throws an
+exception if the column does not exist.
+
+=cut
+sub make_column_dirty {
+ my ($self, $column) = @_;
+
+ $self->throw_exception( "No such column '${column}'" )
+ unless exists $self->{_column_data}{$column} || $self->has_column($column);
+ $self->{_dirty_columns}{$column} = 1;
+}
+
=head2 get_inflated_columns
my %inflated_data = $obj->get_inflated_columns;
$class->mk_group_accessors('column' => $acc);
}
-=head2 get_current_storage
+=head2 get_from_storage ($attrs)
Returns a new Row which is whatever the Storage has for the currently created
-Row object. You ca use this to see if the storage has become inconsistent with
+Row object. You can use this to see if the storage has become inconsistent with
whatever your Row object is.
+$attrs is expected to be a hashref of attributes suitable for passing as the
+second argument to $resultset->search($cond, $attrs);
+
=cut
-sub get_current_storage {
+sub get_from_storage {
my $self = shift @_;
+ my $attrs = shift @_;
my @primary_columns = map { $self->$_ } $self->primary_columns;
- return $self->result_source->schema->txn_do(sub {
- return $self->result_source->resultset->find(@primary_columns);
- });
+ my $resultset = $self->result_source->resultset;
+
+ if(defined $attrs) {
+ $resultset = $resultset->search(undef, $attrs);
+ }
+
+ return $resultset->find(@primary_columns);
}
=head2 throw_exception