MCPcopy Create free account
hub / github.com/dagger/dagger / resolverForSharedResultObject

Function resolverForSharedResultObject

dagql/cache.go:1610–1633  ·  view source on GitHub ↗

resolverForSharedResultObject returns a resolver that can instantiate the cached object's concrete type, rebuilding a dependency-aware schema from the result's call graph if the current resolver does not have the type. This is the fallback path for object reconstruction; the common path reuses the

(ctx context.Context, resolver TypeResolver, res *sharedResult, typeName string)

Source from the content-addressed store, hash-verified

1608// Persisted-envelope decoding still uses this directly because there is no
1609// in-memory value to derive a class from at decode time.
1610func resolverForSharedResultObject(ctx context.Context, resolver TypeResolver, res *sharedResult, typeName string) (TypeResolver, error) {
1611 if resolver == nil || res == nil || typeName == "" {
1612 return resolver, nil
1613 }
1614 if _, ok := resolver.ObjectType(typeName); ok {
1615 return resolver, nil
1616 }
1617 srv, ok := resolver.(*Server)
1618 if !ok || srv.resultServerForCall == nil {
1619 return resolver, nil
1620 }
1621 resultCall := res.loadResultCall()
1622 if resultCall == nil {
1623 return resolver, nil
1624 }
1625 resolved, err := srv.resultServerForCall(ctx, resultCall)
1626 if err != nil {
1627 return nil, fmt.Errorf("resolve schema for result %d type %q: %w", res.id, typeName, err)
1628 }
1629 if resolved == nil {
1630 return resolver, nil
1631 }
1632 return resolved, nil
1633}
1634
1635func wrapSharedResultWithResolver(ctx context.Context, res *sharedResult, hitCache bool, resolver TypeResolver) (AnyResult, error) {
1636 ret := Result[Typed]{

Callers 3

toSelectableMethod · 0.85

Calls 2

loadResultCallMethod · 0.80
ObjectTypeMethod · 0.65

Tested by

no test coverage detected