From 8be965f46b654b1c03b77b6a13b673cfa9813382 Mon Sep 17 00:00:00 2001 From: Christian Stewart Date: Wed, 31 Jan 2024 23:33:03 -0800 Subject: [PATCH] feat(directive): add func resolver Signed-off-by: Christian Stewart --- directive/func-resolver.go | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 directive/func-resolver.go diff --git a/directive/func-resolver.go b/directive/func-resolver.go new file mode 100644 index 00000000..888b1696 --- /dev/null +++ b/directive/func-resolver.go @@ -0,0 +1,24 @@ +package directive + +import "context" + +// FuncResolver resolves a directive with a function. +type FuncResolver struct { + fn func(ctx context.Context, handler ResolverHandler) error +} + +// NewFuncResolver constructs a new FuncResolver. +func NewFuncResolver(fn func(ctx context.Context, handler ResolverHandler) error) *FuncResolver { + return &FuncResolver{fn: fn} +} + +// Resolve resolves the values, emitting them to the handler. +func (r *FuncResolver) Resolve(ctx context.Context, handler ResolverHandler) error { + if r.fn == nil { + return nil + } + return r.fn(ctx, handler) +} + +// _ is a type assertion +var _ Resolver = ((*FuncResolver)(nil))