in cmd/applyconfiguration-gen/generators/openapi.go [124:198]
func findReferenced(def *spec.Schema, allSchemas, referencedOut map[string]spec.Schema) {
// follow $ref, if any
refPtr := def.Ref.GetPointer()
if refPtr != nil && !refPtr.IsEmpty() {
name := refPtr.String()
if !strings.HasPrefix(name, "/definitions/") {
return
}
name = strings.TrimPrefix(name, "/definitions/")
schema, ok := allSchemas[name]
if !ok {
panic(fmt.Sprintf("allSchemas schema is missing referenced type: %s", name))
}
if _, ok := referencedOut[name]; !ok {
referencedOut[name] = schema
findReferenced(&schema, allSchemas, referencedOut)
}
}
// follow any nested schemas
if def.Items != nil {
if def.Items.Schema != nil {
findReferenced(def.Items.Schema, allSchemas, referencedOut)
}
for _, item := range def.Items.Schemas {
findReferenced(&item, allSchemas, referencedOut)
}
}
if def.AllOf != nil {
for _, s := range def.AllOf {
findReferenced(&s, allSchemas, referencedOut)
}
}
if def.AnyOf != nil {
for _, s := range def.AnyOf {
findReferenced(&s, allSchemas, referencedOut)
}
}
if def.OneOf != nil {
for _, s := range def.OneOf {
findReferenced(&s, allSchemas, referencedOut)
}
}
if def.Not != nil {
findReferenced(def.Not, allSchemas, referencedOut)
}
if def.Properties != nil {
for _, prop := range def.Properties {
findReferenced(&prop, allSchemas, referencedOut)
}
}
if def.AdditionalProperties != nil && def.AdditionalProperties.Schema != nil {
findReferenced(def.AdditionalProperties.Schema, allSchemas, referencedOut)
}
if def.PatternProperties != nil {
for _, s := range def.PatternProperties {
findReferenced(&s, allSchemas, referencedOut)
}
}
if def.Dependencies != nil {
for _, d := range def.Dependencies {
if d.Schema != nil {
findReferenced(d.Schema, allSchemas, referencedOut)
}
}
}
if def.AdditionalItems != nil && def.AdditionalItems.Schema != nil {
findReferenced(def.AdditionalItems.Schema, allSchemas, referencedOut)
}
if def.Definitions != nil {
for _, s := range def.Definitions {
findReferenced(&s, allSchemas, referencedOut)
}
}
}