MCPcopy
hub / github.com/danielgtaylor/huma / SchemaFromType

Function SchemaFromType

schema.go:749–762  ·  view source on GitHub ↗

SchemaFromType returns a schema for a given type, using the registry to possibly create references for nested structs. The schema that is returned can then be passed to `huma.Validate` to efficiently validate incoming requests. // Create a registry and register a type. registry := huma.NewMapRegi

(r Registry, t reflect.Type)

Source from the content-addressed store, hash-verified

747// registry := huma.NewMapRegistry("#/prefix", huma.DefaultSchemaNamer)
748// schema := huma.SchemaFromType(registry, reflect.TypeOf(MyType{}))
749func SchemaFromType(r Registry, t reflect.Type) *Schema {
750 s := schemaFromType(r, t)
751 t = deref(t)
752
753 // Transform generated schema if type implements SchemaTransformer
754 ptrT := reflect.PointerTo(t)
755 if t.Implements(schemaTransformerType) || ptrT.Implements(schemaTransformerType) {
756 s = reflect.New(t).Interface().(SchemaTransformer).TransformSchema(r, s)
757
758 // The schema may have been modified, so recompute the error messages.
759 s.PrecomputeMessages()
760 }
761 return s
762}
763
764func schemaFromType(r Registry, t reflect.Type) *Schema {
765 isPointer := t.Kind() == reflect.Pointer

Callers 1

SchemaMethod · 0.85

Calls 4

schemaFromTypeFunction · 0.85
PrecomputeMessagesMethod · 0.80
derefFunction · 0.70
TransformSchemaMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…