diff --git a/internal/backends/nop/nop.go b/internal/backends/nop/nop.go new file mode 100644 index 0000000000..45e713608a --- /dev/null +++ b/internal/backends/nop/nop.go @@ -0,0 +1,23 @@ +package nop + +import "context" + +func New() *Backend { + return &Backend{} +} + +// Backend can be used in cases where no backend is specified to avoid the need to check for nil +// pointers in all resolvers. +type Backend struct{} + +func (*Backend) Set(_ context.Context, _, _, _ string) error { + return nil +} + +func (*Backend) Get(_ context.Context, _, _ string) (string, error) { + return "", nil +} + +func (*Backend) Close(_ context.Context) error { + return nil +} diff --git a/plugins/source/plugin.go b/plugins/source/plugin.go index 66b630265c..57b7b3e56d 100644 --- a/plugins/source/plugin.go +++ b/plugins/source/plugin.go @@ -9,6 +9,7 @@ import ( "github.com/cloudquery/plugin-sdk/backend" "github.com/cloudquery/plugin-sdk/caser" "github.com/cloudquery/plugin-sdk/internal/backends/local" + "github.com/cloudquery/plugin-sdk/internal/backends/nop" "github.com/cloudquery/plugin-sdk/schema" "github.com/cloudquery/plugin-sdk/specs" "github.com/rs/zerolog" @@ -210,7 +211,7 @@ func (p *Plugin) Init(ctx context.Context, spec specs.Source) error { switch spec.Backend { case specs.BackendNone: - // do nothing + p.backend = nop.New() case specs.BackendLocal: p.backend, err = local.New(spec) if err != nil { diff --git a/specs/backend.go b/specs/backend.go index 4a0254f732..6c6cea9153 100644 --- a/specs/backend.go +++ b/specs/backend.go @@ -13,7 +13,7 @@ const ( BackendLocal ) -var AllBackends = Backends{BackendLocal} +var AllBackends = Backends{BackendNone, BackendLocal} var AllBackendNames = [...]string{ BackendNone: "none", BackendLocal: "local",