From c3047f3405cb55ea1452c2d995e3313a68795876 Mon Sep 17 00:00:00 2001 From: Johan de Klerk <jdeklerk00@gmail.com> Date: Tue, 10 May 2022 15:48:59 +0200 Subject: [PATCH] docs - get array info --- api_documentation/api_documentation.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/api_documentation/api_documentation.go b/api_documentation/api_documentation.go index 44e1528..ef371c7 100644 --- a/api_documentation/api_documentation.go +++ b/api_documentation/api_documentation.go @@ -102,7 +102,7 @@ func GetDocs(endpointHandlers map[string]map[string]interface{}, corePath string docMethod.RequestBody = &requestBody if handler.RequestBodyType.Kind() == reflect.Struct && handler.RequestBodyType.NumField() > 0 { - schema, err := StructSchema(handler.RequestBodyType.Field(0).Type) + schema, err := StructSchema(handler.RequestBodyType) if err != nil { return Docs{}, err } @@ -115,7 +115,7 @@ func GetDocs(endpointHandlers map[string]map[string]interface{}, corePath string response, responseBodyTypeString := GetResponse(handler) docMethod.Responses = &response if handler.ResponseType.Kind() == reflect.Struct && handler.ResponseType.NumField() > 0 { - schema, err := StructSchema(handler.ResponseType.Field(0).Type) + schema, err := StructSchema(handler.ResponseType) if err != nil { return Docs{}, err } @@ -289,7 +289,12 @@ func StructSchema(t reflect.Type) (interface{}, error) { schema["type"] = "object" case reflect.Slice: schema["type"] = "array" - schema["items"] = t.Elem() + element := reflect.TypeOf(t).Elem() + items, err := StructSchema(element) + if err != nil { + return nil, errors.Wrapf(err, "failed to document") + } + schema["items"] = items default: return nil, errors.Errorf("cannot generate schema for %v kind=%v", t, t.Kind()) } -- GitLab