make tests more robust
[dbsrgits/DBIx-Data-Store-old.git] / lib / DBIx / Data / Collection / Set.pm
CommitLineData
65b76960 1package DBIx::Data::Collection::Set;
2
3use Moose;
4use Method::Signatures::Simple;
5use Data::Perl::Stream::Array;
6
7has _store => (is => 'ro', required => 1, init_arg => 'store');
8
65b76960 9has _class => (is => 'ro', predicate => '_has_class');
10
11has _member_cache => (is => 'rw', lazy_build => 1);
12
13method _build__member_cache {
14 my $stream = $self->_new_raw_stream;
15 my @cache;
16 while (my ($raw) = $stream->next) {
17 push @cache, $self->_inflate($raw);
18 }
19 \@cache;
20}
21
22method _new_raw_stream {
23 $self->_store->new_select_command([])->execute;
24}
25
26method _inflate ($raw) {
3347c67e 27 bless($raw, $self->_class) if $self->_has_class;
28 $raw;
65b76960 29}
30
31method flatten {
32 @{$self->_member_cache};
33}
34
35method as_stream {
36 Data::Perl::Stream::Array->new(array => $self->_member_cache);
37}
38
391;