Skip to content
This repository has been archived by the owner on Oct 17, 2018. It is now read-only.

Commit

Permalink
More feedback
Browse files Browse the repository at this point in the history
  • Loading branch information
xichen2020 committed Oct 11, 2017
1 parent 2e5cbb6 commit cc9cbed
Showing 1 changed file with 8 additions and 11 deletions.
19 changes: 8 additions & 11 deletions rules/validator.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,10 @@ func (v *validator) validateMappingRules(mrv map[string]*MappingRuleView) error
}

func (v *validator) validateRollupRules(rrv map[string]*RollupRuleView) error {
namesSeen := make(map[string]struct{}, len(rrv))
var (
namesSeen = make(map[string]struct{}, len(rrv))
targetsSeen = make([]RollupTarget, 0, len(rrv))
)
for _, view := range rrv {
// Validate that no rules with the same name exist.
if _, exists := namesSeen[view.Name]; exists {
Expand All @@ -111,25 +114,19 @@ func (v *validator) validateRollupRules(rrv map[string]*RollupRuleView) error {
}
}
}
}

// Validate that there are no conflictiing rollup targets.
return v.validateRollupTargets(rrv)
}

func (v *validator) validateRollupTargets(rrv map[string]*RollupRuleView) error {
seen := make([]RollupTarget, 0, len(rrv))
for _, view := range rrv {
// Validate that there are no conflicting rollup targets.
for _, target := range view.Targets {
current := target.rollupTarget()
for _, seenTarget := range seen {
for _, seenTarget := range targetsSeen {
if current.sameTransform(seenTarget) {
return NewRuleConflictError(fmt.Sprintf("rollup target with name %s and tags %s already exists", current.Name, current.Tags))
}
}
seen = append(seen, current)
targetsSeen = append(targetsSeen, current)
}
}

return nil
}

Expand Down

0 comments on commit cc9cbed

Please sign in to comment.