Red.git | lib/MetamodelX/Red/ | Refreshable.rakumod
use Red::Model;
unit role MetamodelX::Red::Refreshable;
sub __RED_OPERATOR_LOADED__ { True }
multi method refresh(Red::Model:D \model) {
nextwith model, |model.^columns>>.column>>.attr-name
}
multi method refresh(Red::Model:D \model, +@attrs) {
my %ans;
%ans{ @attrs } = |model.^rs.map(-> $model { |@attrs.map: -> $attr { $model."$attr"() } }).head;
for %ans.kv -> $attr, $value {
model.^set-attr: $attr, $value
}
model.^clean-up-columns: @attrs;
model
}