Red.git | lib/Red/AST/ | Union.rakumod
use Red::AST;
use Red::AST::MultiSelect;
unit class Red::AST::Union does Red::AST::MultiSelect;
has Red::AST @.selects;
method new(*@selects) {
nextwith :selects(Array[Red::AST].new: |@selects)
}
method returns { Red::Model }
method args { flat @!selects>>.args }
method tables(::?CLASS:D:) {
(flat @!selects».?tables).grep(-> \v { v !=:= Nil }).unique
}
method find-column-name {}
method union($sel) {
if $sel ~~ ::?CLASS {
self.union: $_ for $sel.selects
} else {
self.selects.push: $sel
}
self
}