Skip to content

Commit 2a57760

Browse files
committed
move renderInitial to spec.go
1 parent a1ca6e7 commit 2a57760

1 file changed

Lines changed: 35 additions & 0 deletions

File tree

core/dbio/api/spec.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -952,6 +952,41 @@ func (iter *Iteration) DetermineStateRenderOrder() (order []string, err error) {
952952
return
953953
}
954954

955+
func (iter *Iteration) renderInitial() (err error) {
956+
// set iteration value
957+
if iter.field != "" {
958+
iter.SetStateVal(iter.field, iter.value)
959+
}
960+
961+
// determine order render
962+
order, err := iter.DetermineStateRenderOrder()
963+
if err != nil {
964+
return g.Error(err, "could not determine render order")
965+
}
966+
967+
// render initial state with proper synchronization
968+
for _, k := range order {
969+
iter.context.Lock()
970+
expr := cast.ToString(iter.state[k])
971+
iter.context.Unlock()
972+
973+
if iter.hasBrackets(expr) {
974+
val, err := iter.renderAny(iter.state[k])
975+
if err != nil {
976+
if strings.Contains(err.Error(), `"require" - input required`) {
977+
return g.Error("state variable input was required but not provided: %s = %s", k, expr)
978+
}
979+
return g.Error(err, "could not render state var (%s) => %s", k, expr)
980+
}
981+
iter.context.Lock()
982+
iter.state[k] = val
983+
iter.context.Unlock()
984+
}
985+
}
986+
987+
return nil
988+
}
989+
955990
// Iterate is for configuring looping values for requests
956991
type Iterate struct {
957992
Over any `yaml:"over" json:"over,omitempty"` // expression

0 commit comments

Comments
 (0)