func()

in resources/resources.go [227:287]


func (k *Kernel) UnmarshalJSON(b []byte) error {
	rawFields := make(map[string]any)
	if err := json.Unmarshal(b, &rawFields); err != nil {
		return err
	}
	if len(rawFields) == 0 {
		// The JSON object was empty; leave the structured object empty too.
		return nil
	}
	if idVal, ok := rawFields["id"]; ok {
		idString, ok := idVal.(string)
		if !ok {
			return fmt.Errorf("invalid value for the field 'id': %+v: %w", idVal, util.HTTPError(http.StatusBadRequest))
		}
		k.ID = idString
	}
	if specIDVal, ok := rawFields["name"]; ok {
		specIDString, ok := specIDVal.(string)
		if !ok {
			return fmt.Errorf("invalid value for the field 'name': %+v: %w", specIDVal, util.HTTPError(http.StatusBadRequest))
		}
		k.SpecID = specIDString
	}
	if lastActivityVal, ok := rawFields["last_activity"]; ok {
		lastActivityString, ok := lastActivityVal.(string)
		if !ok {
			return fmt.Errorf("invalid value for the field 'last_activity': %+v: %w", lastActivityVal, util.HTTPError(http.StatusBadRequest))
		}
		k.LastActivity = lastActivityString
	}
	if connectionsVal, ok := rawFields["connections"]; ok {
		connectionsNumber, ok := connectionsVal.(float64)
		if !ok {
			return fmt.Errorf("invalid type for the field 'connections': %+v: %w", connectionsVal, util.HTTPError(http.StatusBadRequest))
		}
		k.Connections = int(connectionsNumber)
	}
	if executionStateVal, ok := rawFields["execution_state"]; ok {
		executionStateString, ok := executionStateVal.(string)
		if !ok {
			return fmt.Errorf("invalid value for the field 'execution_state': %+v: %w", executionStateVal, util.HTTPError(http.StatusBadRequest))
		}
		k.ExecutionState = executionStateString
	}
	if envVal, ok := rawFields["env"]; ok {
		envMap, ok := envVal.(map[string]any)
		if !ok {
			return fmt.Errorf("invalid value for the field 'env': %+v: %w", envVal, util.HTTPError(http.StatusBadRequest))
		}
		k.Env = envMap
	}
	if metadataVal, ok := rawFields["metadata"]; ok {
		metadataMap, ok := metadataVal.(map[string]any)
		if !ok {
			return fmt.Errorf("invalid value for the field 'metadata': %+v: %w", metadataVal, util.HTTPError(http.StatusBadRequest))
		}
		k.Metadata = metadataMap
	}
	k.rawFields = rawFields
	return nil
}