RaCoCo result: MetamodelX::Red::Supply

# MetamodelX::Red::Supply 0%

    use Red::Model;
    use Red::DB;
    unit role MetamodelX::Red::Supply;

    method last-state-of(::Model Red::Model:U \model, Supply $supply) {
    	my Supplier $s .= new;
    	multi update(Model:D $model) {
    		try {
    			$model.^saved-on-db;
    			$model.^clean-up-columns: $model.^id;
    			$model.^save;
    		}
    		# TODO: Generalise
    		my %row = get-RED-DB.execute("SELECT changes() as changes;").row;
    		unless %row<changes> {
    			$model.^not-on-db;
    			$model.^save;
    		}
    		$s.emit: $model
    	}
    	multi update(%model) {
    		update Model.new: |%model;
    	}
    	$supply.tap: &update;
    	$s.Supply
    }

    method transformed-state-of(::Model Red::Model:U \model, Supply $supply, &func) {
    	my Supplier $s .= new;
    	multi agg(Model:D $model) {
    		try $model.^all.map(&func.assuming: *, $model).save;
    		# TODO: Generalise
    		my %row = get-RED-DB.execute("SELECT changes() as changes;").row;
    		unless %row<changes> {
    			$model.^not-on-db;
    			$model.^save;
    		}
    		$s.emit: $model.^all.head
    	}
    	multi agg(%model) {
    		agg Model.new: |%model;
    	}
    	$supply.tap: &agg;
    	$s.Supply
    }