From fc331cc388b32b142f05548637fa8d89b3a2ed75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Toma=C5=BE=20Jerman?= Date: Wed, 31 Mar 2021 19:32:22 +0200 Subject: [PATCH] Tweaks --- pkg/envoy/yaml/automation_workflow_marshal.go | 1 - system/automation/expr_types.gen.go | 260 +++++++++--------- system/automation/expr_types.go | 10 +- system/automation/expr_types.yaml | 4 +- system/automation/templates_handler.gen.go | 8 +- system/automation/templates_handler.go | 2 +- system/automation/templates_handler.yaml | 6 +- system/service/service.go | 2 +- 8 files changed, 146 insertions(+), 147 deletions(-) diff --git a/pkg/envoy/yaml/automation_workflow_marshal.go b/pkg/envoy/yaml/automation_workflow_marshal.go index aa9fe0329..ea9e776ca 100644 --- a/pkg/envoy/yaml/automation_workflow_marshal.go +++ b/pkg/envoy/yaml/automation_workflow_marshal.go @@ -120,7 +120,6 @@ func (t *automationTrigger) MarshalYAML() (interface{}, error) { "eventType", t.res.EventType, "constraints", t.res.Constraints, "enabled", t.res.Enabled, - "workflowID", t.res.WorkflowID, "stepID", t.res.StepID, "input", t.res.Input, diff --git a/system/automation/expr_types.gen.go b/system/automation/expr_types.gen.go index 70db21ccf..7f6cb9433 100644 --- a/system/automation/expr_types.gen.go +++ b/system/automation/expr_types.gen.go @@ -18,136 +18,6 @@ import ( var _ = context.Background var _ = fmt.Errorf -// Document is an expression type, wrapper for *RenderedDocument type -type Document struct{ value *RenderedDocument } - -// NewDocument creates new instance of Document expression type -func NewDocument(val interface{}) (*Document, error) { - if c, err := CastToDocument(val); err != nil { - return nil, fmt.Errorf("unable to create Document: %w", err) - } else { - return &Document{value: c}, nil - } -} - -// Return underlying value on Document -func (t Document) Get() interface{} { return t.value } - -// Return underlying value on Document -func (t Document) GetValue() *RenderedDocument { return t.value } - -// Return type name -func (Document) Type() string { return "Document" } - -// Convert value to *RenderedDocument -func (Document) Cast(val interface{}) (TypedValue, error) { - return NewDocument(val) -} - -// Assign new value to Document -// -// value is first passed through CastToDocument -func (t *Document) Assign(val interface{}) error { - if c, err := CastToDocument(val); err != nil { - return err - } else { - t.value = c - return nil - } -} - -func (t *Document) AssignFieldValue(key string, val TypedValue) error { - return assignToDocument(t.value, key, val) -} - -// SelectGVal implements gval.Selector requirements -// -// It allows gval lib to access Document's underlying value (*RenderedDocument) -// and it's fields -// -func (t Document) SelectGVal(ctx context.Context, k string) (interface{}, error) { - return documentGValSelector(t.value, k) -} - -// Select is field accessor for *RenderedDocument -// -// Similar to SelectGVal but returns typed values -func (t Document) Select(k string) (TypedValue, error) { - return documentTypedValueSelector(t.value, k) -} - -func (t Document) Has(k string) bool { - switch k { - case "document": - return true - case "name": - return true - case "type": - return true - } - return false -} - -// documentGValSelector is field accessor for *RenderedDocument -func documentGValSelector(res *RenderedDocument, k string) (interface{}, error) { - switch k { - case "document": - return res.Document, nil - case "name": - return res.Name, nil - case "type": - return res.Type, nil - } - - return nil, fmt.Errorf("unknown field '%s'", k) -} - -// documentTypedValueSelector is field accessor for *RenderedDocument -func documentTypedValueSelector(res *RenderedDocument, k string) (TypedValue, error) { - switch k { - case "document": - return NewReader(res.Document) - case "name": - return NewString(res.Name) - case "type": - return NewString(res.Type) - } - - return nil, fmt.Errorf("unknown field '%s'", k) -} - -// assignToDocument is field value setter for *RenderedDocument -func assignToDocument(res *RenderedDocument, k string, val interface{}) error { - switch k { - case "document": - aux, err := CastToReader(val) - if err != nil { - return err - } - - res.Document = aux - return nil - case "name": - aux, err := CastToString(val) - if err != nil { - return err - } - - res.Name = aux - return nil - case "type": - aux, err := CastToString(val) - if err != nil { - return err - } - - res.Type = aux - return nil - } - - return fmt.Errorf("unknown field '%s'", k) -} - // DocumentType is an expression type, wrapper for types.DocumentType type type DocumentType struct{ value types.DocumentType } @@ -224,6 +94,136 @@ func (t *RenderOptions) Assign(val interface{}) error { } } +// RenderedDocument is an expression type, wrapper for *renderedDocument type +type RenderedDocument struct{ value *renderedDocument } + +// NewRenderedDocument creates new instance of RenderedDocument expression type +func NewRenderedDocument(val interface{}) (*RenderedDocument, error) { + if c, err := CastToRenderedDocument(val); err != nil { + return nil, fmt.Errorf("unable to create RenderedDocument: %w", err) + } else { + return &RenderedDocument{value: c}, nil + } +} + +// Return underlying value on RenderedDocument +func (t RenderedDocument) Get() interface{} { return t.value } + +// Return underlying value on RenderedDocument +func (t RenderedDocument) GetValue() *renderedDocument { return t.value } + +// Return type name +func (RenderedDocument) Type() string { return "RenderedDocument" } + +// Convert value to *renderedDocument +func (RenderedDocument) Cast(val interface{}) (TypedValue, error) { + return NewRenderedDocument(val) +} + +// Assign new value to RenderedDocument +// +// value is first passed through CastToRenderedDocument +func (t *RenderedDocument) Assign(val interface{}) error { + if c, err := CastToRenderedDocument(val); err != nil { + return err + } else { + t.value = c + return nil + } +} + +func (t *RenderedDocument) AssignFieldValue(key string, val TypedValue) error { + return assignToRenderedDocument(t.value, key, val) +} + +// SelectGVal implements gval.Selector requirements +// +// It allows gval lib to access RenderedDocument's underlying value (*renderedDocument) +// and it's fields +// +func (t RenderedDocument) SelectGVal(ctx context.Context, k string) (interface{}, error) { + return renderedDocumentGValSelector(t.value, k) +} + +// Select is field accessor for *renderedDocument +// +// Similar to SelectGVal but returns typed values +func (t RenderedDocument) Select(k string) (TypedValue, error) { + return renderedDocumentTypedValueSelector(t.value, k) +} + +func (t RenderedDocument) Has(k string) bool { + switch k { + case "document": + return true + case "name": + return true + case "type": + return true + } + return false +} + +// renderedDocumentGValSelector is field accessor for *renderedDocument +func renderedDocumentGValSelector(res *renderedDocument, k string) (interface{}, error) { + switch k { + case "document": + return res.Document, nil + case "name": + return res.Name, nil + case "type": + return res.Type, nil + } + + return nil, fmt.Errorf("unknown field '%s'", k) +} + +// renderedDocumentTypedValueSelector is field accessor for *renderedDocument +func renderedDocumentTypedValueSelector(res *renderedDocument, k string) (TypedValue, error) { + switch k { + case "document": + return NewReader(res.Document) + case "name": + return NewString(res.Name) + case "type": + return NewString(res.Type) + } + + return nil, fmt.Errorf("unknown field '%s'", k) +} + +// assignToRenderedDocument is field value setter for *renderedDocument +func assignToRenderedDocument(res *renderedDocument, k string, val interface{}) error { + switch k { + case "document": + aux, err := CastToReader(val) + if err != nil { + return err + } + + res.Document = aux + return nil + case "name": + aux, err := CastToString(val) + if err != nil { + return err + } + + res.Name = aux + return nil + case "type": + aux, err := CastToString(val) + if err != nil { + return err + } + + res.Type = aux + return nil + } + + return fmt.Errorf("unknown field '%s'", k) +} + // Role is an expression type, wrapper for *types.Role type type Role struct{ value *types.Role } diff --git a/system/automation/expr_types.go b/system/automation/expr_types.go index 95cbd0ef9..6c7a58e6d 100644 --- a/system/automation/expr_types.go +++ b/system/automation/expr_types.go @@ -10,7 +10,7 @@ import ( ) type ( - RenderedDocument struct { + renderedDocument struct { Document io.Reader Name string Type string @@ -87,17 +87,17 @@ func CastToTemplateMeta(val interface{}) (out types.TemplateMeta, err error) { } } -func CastToDocument(val interface{}) (out *RenderedDocument, err error) { +func CastToRenderedDocument(val interface{}) (out *renderedDocument, err error) { switch val := val.(type) { case expr.Iterator: - out = &RenderedDocument{} + out = &renderedDocument{} return out, val.Each(func(k string, v expr.TypedValue) error { - return assignToDocument(out, k, v) + return assignToRenderedDocument(out, k, v) }) } switch val := expr.UntypedValue(val).(type) { - case *RenderedDocument: + case *renderedDocument: return val, nil default: return nil, fmt.Errorf("unable to cast type %T to %T", val, out) diff --git a/system/automation/expr_types.yaml b/system/automation/expr_types.yaml index f65635620..fed339f7c 100644 --- a/system/automation/expr_types.yaml +++ b/system/automation/expr_types.yaml @@ -55,8 +55,8 @@ types: struct: - { name: 'short', exprType: 'String', goType: 'string'} - { name: 'description', exprType: 'String', goType: 'string'} - Document: - as: '*RenderedDocument' + RenderedDocument: + as: '*renderedDocument' struct: - { name: 'document', exprType: 'Reader', goType: 'io.Reader' } - { name: 'name', exprType: 'string', goType: 'string' } diff --git a/system/automation/templates_handler.gen.go b/system/automation/templates_handler.gen.go index 5395797bf..6fd01938e 100644 --- a/system/automation/templates_handler.gen.go +++ b/system/automation/templates_handler.gen.go @@ -753,7 +753,7 @@ type ( } templatesRenderResults struct { - Document *RenderedDocument + Document *renderedDocument } ) @@ -803,7 +803,7 @@ func (h templatesHandler) Render() *atypes.Function { { Name: "document", - Types: []string{"Document"}, + Types: []string{"RenderedDocument"}, }, }, @@ -843,12 +843,12 @@ func (h templatesHandler) Render() *atypes.Function { out = &expr.Vars{} { - // converting results.Document (*RenderedDocument) to Document + // converting results.Document (*renderedDocument) to RenderedDocument var ( tval expr.TypedValue ) - if tval, err = h.reg.Type("Document").Cast(results.Document); err != nil { + if tval, err = h.reg.Type("RenderedDocument").Cast(results.Document); err != nil { return } else if err = expr.Assign(out, "document", tval); err != nil { return diff --git a/system/automation/templates_handler.go b/system/automation/templates_handler.go index 180cd347c..470bd6b2a 100644 --- a/system/automation/templates_handler.go +++ b/system/automation/templates_handler.go @@ -187,7 +187,7 @@ func (h templatesHandler) render(ctx context.Context, args *templatesRenderArgs) } rr := &templatesRenderResults{ - Document: &RenderedDocument{ + Document: &renderedDocument{ Document: doc, Name: args.DocumentName, Type: args.DocumentType, diff --git a/system/automation/templates_handler.yaml b/system/automation/templates_handler.yaml index 02b2cbbb3..f6118aa77 100644 --- a/system/automation/templates_handler.yaml +++ b/system/automation/templates_handler.yaml @@ -16,8 +16,8 @@ snippets: rvTemplate: &rvTemplate wf: Template - rvDocument: &rvDocument - wf: Document + rvRenderedDocument: &rvRenderedDocument + wf: RenderedDocument rvTotal: &rvTotal wf: UnsignedInteger @@ -158,4 +158,4 @@ functions: types: - { wf: RenderOptions } results: - document: *rvDocument + document: *rvRenderedDocument diff --git a/system/service/service.go b/system/service/service.go index 630550343..30c355626 100644 --- a/system/service/service.go +++ b/system/service/service.go @@ -175,7 +175,7 @@ func Initialize(ctx context.Context, log *zap.Logger, s store.Storer, c Config) automation.Role{}, automation.Template{}, automation.RenderOptions{}, - automation.Document{}, + automation.RenderedDocument{}, ) automation.UsersHandler(