factor out FindIsh, implement ForEach
[scpubgit/DKit.git] / lib / DX / Op / FindAll.pm
CommitLineData
138613a8 1package DX::Op::FindAll;
2
3use DX::Op::FromCode;
4use DX::Op::FindAllCollect;
5use DX::Var;
6use DX::OrderedSet;
7use DX::Op::Return;
8use Moo;
9
f5a02c91 10with 'DX::Role::Op::FindIsh';
138613a8 11
12has coll_name => (is => 'ro', required => 1);
13
f5a02c91 14sub make_result_handler {
15 my ($self, $coll) = @_;
16 my $coll_name = $self->coll_name;
17 DX::Op::FromCode->new(
138613a8 18 code => sub {
19 my ($self, $state) = @_;
f5a02c91 20 $state->bind_value($state->scope->{$coll_name} => $coll)
21 ->then($self->next);
138613a8 22 },
f5a02c91 23 next => $self->next
138613a8 24 );
138613a8 25}
26
271;