From 40efdbab0277d8976cfbd4d5850047ae9675f99f Mon Sep 17 00:00:00 2001 From: Cedric Date: Mon, 10 Feb 2025 11:13:30 +0000 Subject: [PATCH] [CAPPL-308] Add non-data dependency to chain reader (#1025) --- .../readcontract/action_builders_generated.go | 5 +++-- .../readcontract/readcontract_action-schema.json | 10 +++++++--- .../readcontract/readcontract_action_generated.go | 3 +++ .../readcontracttest/action_mock_generated.go | 12 ++++++------ 4 files changed, 19 insertions(+), 11 deletions(-) diff --git a/pkg/capabilities/actions/readcontract/action_builders_generated.go b/pkg/capabilities/actions/readcontract/action_builders_generated.go index dad3f4d49..31582fe96 100644 --- a/pkg/capabilities/actions/readcontract/action_builders_generated.go +++ b/pkg/capabilities/actions/readcontract/action_builders_generated.go @@ -7,16 +7,17 @@ import ( "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk" ) -func (cfg Config) New(w *sdk.WorkflowSpecFactory, ref string, input ActionInput) OutputCap { +func (cfg Config) New(w *sdk.WorkflowSpecFactory, id string, ref string, input ActionInput) OutputCap { def := sdk.StepDefinition{ - ID: "read-contract-action@1.0.0", Ref: ref, + ID: id, Ref: ref, Inputs: input.ToSteps(), Config: map[string]any{ "ContractAddress": cfg.ContractAddress, "ContractName": cfg.ContractName, "ContractReaderConfig": cfg.ContractReaderConfig, "ReadIdentifier": cfg.ReadIdentifier, + "StepDependency": cfg.StepDependency, }, CapabilityType: capabilities.CapabilityTypeAction, } diff --git a/pkg/capabilities/actions/readcontract/readcontract_action-schema.json b/pkg/capabilities/actions/readcontract/readcontract_action-schema.json index de94037d6..0411d3d57 100644 --- a/pkg/capabilities/actions/readcontract/readcontract_action-schema.json +++ b/pkg/capabilities/actions/readcontract/readcontract_action-schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/smartcontractkit/chainlink-common/pkg/capabilities/actions/readcontract/read-contract-action@1.0.0", + "$id": "https://github.com/smartcontractkit/chainlink-common/pkg/capabilities/actions/readcontract/read-contract", "$defs": { "Config": { "type": "object", @@ -16,7 +16,11 @@ }, "ContractName": { "type": "string" - } + }, + "StepDependency": { + "type": "string", + "description": "an optional step reference that is a non-data dependency for the current step" + } }, "required": ["ContractReaderConfig", "ReadIdentifier", "ContractAddress", "ContractName"] }, @@ -55,4 +59,4 @@ "$ref": "#/$defs/Output" } } -} \ No newline at end of file +} diff --git a/pkg/capabilities/actions/readcontract/readcontract_action_generated.go b/pkg/capabilities/actions/readcontract/readcontract_action_generated.go index 8f19f8da4..3eea28d04 100644 --- a/pkg/capabilities/actions/readcontract/readcontract_action_generated.go +++ b/pkg/capabilities/actions/readcontract/readcontract_action_generated.go @@ -31,6 +31,9 @@ type Config struct { // ReadIdentifier corresponds to the JSON schema field "ReadIdentifier". ReadIdentifier string `json:"ReadIdentifier" yaml:"ReadIdentifier" mapstructure:"ReadIdentifier"` + + // an optional step reference that is a non-data dependency for the current step + StepDependency *string `json:"StepDependency,omitempty" yaml:"StepDependency,omitempty" mapstructure:"StepDependency,omitempty"` } // UnmarshalJSON implements json.Unmarshaler. diff --git a/pkg/capabilities/actions/readcontract/readcontracttest/action_mock_generated.go b/pkg/capabilities/actions/readcontract/readcontracttest/action_mock_generated.go index ca5f1b321..159c598a5 100644 --- a/pkg/capabilities/actions/readcontract/readcontracttest/action_mock_generated.go +++ b/pkg/capabilities/actions/readcontract/readcontracttest/action_mock_generated.go @@ -11,17 +11,17 @@ import ( // Action registers a new capability mock with the runner // if another mock is registered for the same capability with for a step, it will take priority for that step. -func Action(runner *testutils.Runner, fn func(input readcontract.Input) (readcontract.Output, error)) *testutils.Mock[readcontract.Input, readcontract.Output] { - mock := testutils.MockCapability[readcontract.Input, readcontract.Output]("read-contract-action@1.0.0", fn) - runner.MockCapability("read-contract-action@1.0.0", nil, mock) +func Action(runner *testutils.Runner, id string, fn func(input readcontract.Input) (readcontract.Output, error)) *testutils.Mock[readcontract.Input, readcontract.Output] { + mock := testutils.MockCapability[readcontract.Input, readcontract.Output](id, fn) + runner.MockCapability(id, nil, mock) return mock } // ActionForStep registers a new capability mock with the runner, but only for a given step. // if another mock was registered for the same capability without a step, this mock will take priority for that step. -func ActionForStep(runner *testutils.Runner, step string, mockFn func(input readcontract.Input) (readcontract.Output, error)) *testutils.Mock[readcontract.Input, readcontract.Output] { +func ActionForStep(runner *testutils.Runner, id string, step string, mockFn func(input readcontract.Input) (readcontract.Output, error)) *testutils.Mock[readcontract.Input, readcontract.Output] { fn := mockFn - mock := testutils.MockCapability[readcontract.Input, readcontract.Output]("read-contract-action@1.0.0", fn) - runner.MockCapability("read-contract-action@1.0.0", &step, mock) + mock := testutils.MockCapability[readcontract.Input, readcontract.Output](id, fn) + runner.MockCapability(id, &step, mock) return mock }