File-DataClass
view release on metacpan or search on metacpan
lib/File/DataClass/ResultSet.pm view on Meta::CPAN
return $self->$_txn_do( sub { $self->$_list( $id ) } );
}
sub next {
my $self = shift;
my $index = $self->_iterator; $self->_iterator( $index + 1 );
return $self->_results->[ $index ];
}
sub push {
my ($self, $args) = @_; my $id = $self->$_validate_params( $args );
my $list = $args->{list} or throw Unspecified, [ 'list' ];
my $items = $args->{items} // []; my ($added, $attrs);
$items->[ 0 ] or throw 'List contains no items';
my $res = $self->$_txn_do( sub {
($attrs, $added) = $self->$_push( $id, $list, $items );
return $self->$_find_and_update( $attrs );
} );
return $res ? $added : FALSE;
}
sub reset {
my $self = shift; return $self->_iterator( 0 );
}
sub select {
my $self = shift;
return $self->storage->select( $self->path, $self->result_source->name );
}
sub search {
my ($self, $args) = @_;
return $self->$_txn_do( sub { $self->$_search( $args ) } );
}
sub splice {
my ($self, $args) = @_; my $id = $self->$_validate_params( $args );
my $list = $args->{list} or throw Unspecified, [ 'list' ];
my $items = $args->{items} // []; my ($attrs, $removed);
$items->[ 0 ] or throw 'List contains no items';
my $res = $self->$_txn_do( sub {
($attrs, $removed) = $self->$_splice( $id, $list, $items );
return $self->$_find_and_update( $attrs );
} );
return $res ? $removed : FALSE;
}
sub update {
my ($self, $args) = @_;
if (my $id = $args->{id} // $args->{name}) { # Deprecated
return $self->$_txn_do( sub { $self->$_find_and_update( $args ) } );
}
return $self->$_txn_do( sub {
my $updated = FALSE;
for my $result (@{ $self->_results }) {
my $res = $self->$_update_result( $result, $args ); $updated ||= $res;
}
return $updated;
} );
}
1;
__END__
=pod
=head1 Name
File::DataClass::ResultSet - Core result management methods
=head1 Synopsis
use File:DataClass;
my $attr = { result_source_attributes => { schema_attributes => { ... } } };
my $result_source = File::DataClass->new( $attr )->result_source;
my $rs = $result_source->resultset( { path => q(path_to_data_file) } );
my $result = $rs->search( $hash_ref_of_where_clauses );
for my $result_object ($result->next) {
# Do something with the result object
}
=head1 Description
Find, search and update methods for element objects
=head1 Configuration and Environment
Defines these attributes
=over 3
=item C<list_class>
List class name, defaults to L<File::DataClass::List>
=item C<result_class>
Result class name, defaults to L<File::DataClass::Result>
( run in 1.890 second using v1.01-cache-2.11-cpan-524268b4103 )