3
0

Fix workflow importing and referencing

* Page blocks used invalid ref. formats & value setters.
* Some default values were skipped due to how yaml decoder works.
This commit is contained in:
Tomaž Jerman 2023-04-02 09:09:36 +02:00
parent ef94c90da1
commit b041e4fb32
4 changed files with 58 additions and 2 deletions

View File

@ -617,6 +617,17 @@ func (d *auxYamlDoc) unmarshalTriggerNode(dctx documentContext, n *yaml.Node, me
break
case "eventtype", "eventType", "event_type":
// Handle field alias
//
// @todo consider adding an is empty check before overwriting
err = y7s.DecodeScalar(n, "eventType", &r.EventType)
if err != nil {
return err
}
break
case "id":
// Handle identifiers
err = y7s.DecodeScalar(n, "id", &auxNodeValue)
@ -646,6 +657,28 @@ func (d *auxYamlDoc) unmarshalTriggerNode(dctx documentContext, n *yaml.Node, me
break
case "resourcetype", "resourceType", "resource_type":
// Handle field alias
//
// @todo consider adding an is empty check before overwriting
err = y7s.DecodeScalar(n, "resourceType", &r.ResourceType)
if err != nil {
return err
}
break
case "stepid", "stepID", "step_id":
// Handle field alias
//
// @todo consider adding an is empty check before overwriting
err = y7s.DecodeScalar(n, "stepID", &r.StepID)
if err != nil {
return err
}
break
case "updatedby":
// Handle references
err = y7s.DecodeScalar(n, "updatedBy", &auxNodeValue)

View File

@ -21,6 +21,11 @@ trigger: {
goType: "uint64",
storeIdent: "rel_step"
dal: { type: "ID" }
envoy: {
yaml: {
identKeyAlias: ["stepID", "step_id"]
}
}
}
enabled: {
sortable: true,
@ -37,11 +42,21 @@ trigger: {
sortable: true,
goType: "string"
dal: { length: 64 }
envoy: {
yaml: {
identKeyAlias: ["resourceType", "resource_type"]
}
}
}
event_type: {
sortable: true,
goType: "string"
dal: {}
envoy: {
yaml: {
identKeyAlias: ["eventType", "event_type"]
}
}
}
constraints: {
goType: "types.TriggerConstraintSet"

View File

@ -261,14 +261,14 @@ func getPageBlockAutomationRefs(b types.PageBlock, index int) (refs map[string]e
refs = make(map[string]envoyx.Ref)
bb, _ := b.Options["buttons"].([]interface{})
for _, b := range bb {
for buttonIx, b := range bb {
button, _ := b.(map[string]interface{})
id := optString(button, "workflow", "workflowID")
if id == "" || id == "0" {
return
}
refs[fmt.Sprintf("Blocks.%d.Options.WorkflowID", index)] = envoyx.Ref{
refs[fmt.Sprintf("Blocks.%d.Options.buttons.%d.WorkflowID", index, buttonIx)] = envoyx.Ref{
ResourceType: automationTypes.WorkflowResourceType,
Identifiers: envoyx.MakeIdentifiers(id),
}

View File

@ -432,6 +432,14 @@ func (b *PageBlock) setOptionValue(path []string, pos uint, value any) (err erro
case "chartID", "ChartID":
b.Options["chartID"] = cast.ToString(value)
case "buttons":
switch path[2] {
case "workflowID", "WorkflowID":
button := (b.Options["buttons"].([]any))[cast.ToInt(path[1])].(map[string]interface{})
button["workflowID"] = cast.ToString(value)
delete(button, "workflow")
}
}
return