Skip to content

Commit

Permalink
updated exclusion with '.'
Browse files Browse the repository at this point in the history
  • Loading branch information
adranwit committed Aug 18, 2024
1 parent 56eaa2a commit 6bfa967
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 7 deletions.
21 changes: 15 additions & 6 deletions internal/translator/rule.go
Original file line number Diff line number Diff line change
Expand Up @@ -315,28 +315,37 @@ func (r *Rule) RootView() *View {
return r.RootViewlet().View
}

func (r *Rule) updateExclude(n *Viewlet) {
func (r *Rule) updateExclude(n *Viewlet) error {
prefix := ""
r.updateViewExclude(n, prefix)
return r.updateViewExclude(n, prefix)
}

func (r *Rule) updateViewExclude(n *Viewlet, prefix string) {
func (r *Rule) updateViewExclude(n *Viewlet, prefix string) error {
if n.Holder != "" {
prefix += n.Holder + "."
}
fmt.Printf("updating exclude: %v %v\n", n.Name, n.Holder)

for _, exclude := range n.View.Exclude { //Todo convert to field name
field := n.Spec.Type.ByColumn(exclude)

if exclude == "." && prefix != "" {
r.Route.Output.Exclude = append(r.Route.Output.Exclude, prefix[:len(prefix)-1])
continue
}
if field == nil {
return fmt.Errorf("unable locate column %v to exclude", exclude)
}
r.Route.Output.Exclude = append(r.Route.Output.Exclude, prefix+field.Name)
}

for _, rel := range n.View.With {
viewName := strings.Replace(rel.Of.View.Name, "#", "", 1)
relViewlet := r.Viewlets.Lookup(viewName)
r.updateViewExclude(relViewlet, prefix)
if err := r.updateViewExclude(relViewlet, prefix); err != nil {
return err
}
}
n.View.Exclude = nil //TODO do we have to remove it
return nil
}

func (r *Rule) applyRootViewRouteShorthands() {
Expand Down
4 changes: 3 additions & 1 deletion internal/translator/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,9 @@ func (s *Service) translateReaderDSQL(ctx context.Context, resource *Resource, d
if viewParameter := resource.OutputState.Parameters().LookupByLocation(state.KindOutput, "view"); viewParameter != nil && !viewParameter.IsAnonymous() {
rootViewlet.Holder = viewParameter.Name
}
resource.Rule.updateExclude(rootViewlet)
if err = resource.Rule.updateExclude(rootViewlet); err != nil {
return err
}

if err = resource.Rule.Viewlets.Each(func(viewlet *Viewlet) error {
return s.adjustView(viewlet, resource, view.ModeQuery)
Expand Down

0 comments on commit 6bfa967

Please sign in to comment.