Defer model validation to requested branches instead of entire model
This commit is contained in:
@@ -108,13 +108,6 @@ func (m *model) Run(ctx context.Context) (err error) {
|
||||
return errors.New("no model steps defined")
|
||||
}
|
||||
|
||||
for _, s := range m.steps {
|
||||
err = s.Validate()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}()
|
||||
if err != nil {
|
||||
|
||||
@@ -65,9 +65,30 @@ func (m *model) datasource(ctx context.Context, def *FrameDefinition) (ds Dataso
|
||||
return nil, fmt.Errorf("unresolved source: %s", def.Source)
|
||||
}
|
||||
|
||||
err = m.validateBranch(start)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
return m.reduceBranch(ctx, start)
|
||||
}
|
||||
|
||||
func (m *model) validateBranch(n *modelGraphNode) (err error) {
|
||||
err = n.step.Validate()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for _, c := range n.cc {
|
||||
err = m.validateBranch(c)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *model) reduceBranch(ctx context.Context, n *modelGraphNode) (out Datasource, err error) {
|
||||
// leaf node, nothing else to do
|
||||
if len(n.cc) == 0 {
|
||||
|
||||
Reference in New Issue
Block a user