1 package DBIx::Data::Collection::Set;
4 use Method::Signatures::Simple;
5 use Data::Perl::Stream::Array;
7 has _store => (is => 'ro', required => 1, init_arg => 'store');
9 has _column_order => (is => 'ro', required => 1, init_arg => 'column_order');
11 has _class => (is => 'ro', predicate => '_has_class');
13 has _member_cache => (is => 'rw', lazy_build => 1);
15 method _build__member_cache {
16 my $stream = $self->_new_raw_stream;
18 while (my ($raw) = $stream->next) {
19 push @cache, $self->_inflate($raw);
24 method _new_raw_stream {
25 $self->_store->new_select_command([])->execute;
28 method _inflate ($raw) {
29 my @order = @{$self->_column_order};
31 @final{@order} = @$raw;
32 bless(\%final, $self->_class) if $self->_has_class;
37 @{$self->_member_cache};
41 Data::Perl::Stream::Array->new(array => $self->_member_cache);