diff --git a/pkg/swagger-gen/generators/gen.go b/pkg/swagger-gen/generators/gen.go index e04e36e..ee28654 100755 --- a/pkg/swagger-gen/generators/gen.go +++ b/pkg/swagger-gen/generators/gen.go @@ -779,6 +779,10 @@ func (w snippetWriter) line(l string) { w.lines([]string{l}) } +func (w snippetWriter) rawLine(l string) { + w.sw.Do(fmt.Sprintf("%s", l), nil) +} + func generateCreate(createMethod, getMethod *Method, sw *generator.SnippetWriter) { if createMethod == nil || getMethod == nil { return diff --git a/pkg/swagger-gen/generators/helper.go b/pkg/swagger-gen/generators/helper.go index 89c3065..034336e 100755 --- a/pkg/swagger-gen/generators/helper.go +++ b/pkg/swagger-gen/generators/helper.go @@ -391,6 +391,16 @@ func (r parameter) getBody() *types.Type { } func (r parameter) do(sw *generator.SnippetWriter, h *snippetWriter) { + query := r.getQuery() + var queryMapName string + if query != nil { + if query.Kind == types.Map { + // create map alias struct + queryMapName = fmt.Sprintf("%s_map ", r.operationId) + h.rawLine("type " + queryMapName) + sw.Do("$.type|raw$\n", getArgs(query)) + } + } sw.Do(fmt.Sprintf("type %s struct {\n", r.operationId), nil) if r.withId { h.line(fmt.Sprintf("The Id or Name of %s", r.singular)) @@ -403,10 +413,13 @@ func (r parameter) do(sw *generator.SnippetWriter, h *snippetWriter) { h.line("in:path") sw.Do(fmt.Sprintf("%s string `json:\"%s\"`\n", strings.Title(k), k), nil) } - query := r.getQuery() if query != nil { args := getArgs(query) - sw.Do("$.type|raw$\n", args) + if queryMapName != "" { + h.rawLine(fmt.Sprintf("%s\n", queryMapName)) + } else { + sw.Do("$.type|raw$\n", args) + } } body := r.getBody() args := getArgs(body)