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

Function decodePersistedModuleObjectValue

core/object.go:889–931  ·  view source on GitHub ↗
(ctx context.Context, dag *dagql.Server, val persistedModuleObjectValue)

Source from the content-addressed store, hash-verified

887}
888
889func decodePersistedModuleObjectValue(ctx context.Context, dag *dagql.Server, val persistedModuleObjectValue) (any, error) {
890 switch val.Kind {
891 case "", persistedModuleObjectValueKindNull:
892 return nil, nil
893 case persistedModuleObjectValueKindResultRef:
894 return loadPersistedResultByResultID(ctx, dag, val.ResultID, "module object value")
895 case persistedModuleObjectValueKindCallID:
896 return decodePersistedCallID(val.CallID)
897 case persistedModuleObjectValueKindScalar:
898 var decoded any
899 if len(val.ScalarJSON) == 0 {
900 return nil, nil
901 }
902 if err := json.Unmarshal(val.ScalarJSON, &decoded); err != nil {
903 return nil, err
904 }
905 return decoded, nil
906 case persistedModuleObjectValueKindArray:
907 items := make([]any, 0, len(val.Items))
908 for i, item := range val.Items {
909 decoded, err := decodePersistedModuleObjectValue(ctx, dag, item)
910 if err != nil {
911 return nil, fmt.Errorf("item %d: %w", i, err)
912 }
913 items = append(items, decoded)
914 }
915 return items, nil
916 case persistedModuleObjectValueKindObject:
917 fields := make(map[string]any, len(val.Fields))
918 fieldNames := slices.Collect(maps.Keys(val.Fields))
919 slices.Sort(fieldNames)
920 for _, name := range fieldNames {
921 decoded, err := decodePersistedModuleObjectValue(ctx, dag, val.Fields[name])
922 if err != nil {
923 return nil, fmt.Errorf("field %q: %w", name, err)
924 }
925 fields[name] = decoded
926 }
927 return fields, nil
928 default:
929 return nil, fmt.Errorf("unsupported kind %q", val.Kind)
930 }
931}
932
933func persistedModuleObjectFieldName(field reflect.StructField) (string, bool) {
934 if field.PkgPath != "" {

Calls 5

decodePersistedCallIDFunction · 0.85
UnmarshalMethod · 0.65
KeysMethod · 0.65
SortMethod · 0.45