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