diff --git a/pkg/asyncapi/v2/schema.go b/pkg/asyncapi/v2/schema.go index e72e853e..47e883ee 100644 --- a/pkg/asyncapi/v2/schema.go +++ b/pkg/asyncapi/v2/schema.go @@ -96,7 +96,11 @@ func (s *Schema) generateMetadata(name string, isRequired bool) error { // Set IsRequired s.IsRequired = isRequired - + if s.Type == "" { + if _, ok := s.Const.(string); ok { + s.Type = "string" + } + } return nil } diff --git a/pkg/codegen/generators/v2/templates/schema_definition.tmpl b/pkg/codegen/generators/v2/templates/schema_definition.tmpl index b997cd2d..31d0425e 100644 --- a/pkg/codegen/generators/v2/templates/schema_definition.tmpl +++ b/pkg/codegen/generators/v2/templates/schema_definition.tmpl @@ -13,7 +13,7 @@ type {{ namify .Name }} struct { {{if $value.Description}} // Description: {{multiLineComment $value.Description}} {{else if and $value.ReferenceTo $value.ReferenceTo.Description}} - // Description: {{$value.ReferenceTo.Description}} + // Description: {{multiLineComment $value.ReferenceTo.Description}} {{end -}} {{namify $key}} {{if and (not (isRequired $ $key)) (ne $value.Type "array")}}*{{end}}{{template "schema-name" $value}} `json:"{{convertKey $key}}"{{generateValidateTags $value.Validations}}` {{end -}} diff --git a/pkg/codegen/generators/v2/templates/schema_name.tmpl b/pkg/codegen/generators/v2/templates/schema_name.tmpl index 818b5f4f..0577af6b 100644 --- a/pkg/codegen/generators/v2/templates/schema_name.tmpl +++ b/pkg/codegen/generators/v2/templates/schema_name.tmpl @@ -71,8 +71,9 @@ struct { {{- else if .ReferenceTo -}} {{ namify .Follow.Name }} -{{- /* ----------------------- Unsupported usecase ---------------------- */ -}} +{{- /* ----------------------- Unsupported use case ---------------------- */ -}} {{- else -}} +interface{} // WARNING: potential error in AsyncAPI generation // Infos on type: {{ describeStruct . }} {{- end -}} diff --git a/pkg/codegen/generators/v3/templates/schema_definition.tmpl b/pkg/codegen/generators/v3/templates/schema_definition.tmpl index b997cd2d..31d0425e 100644 --- a/pkg/codegen/generators/v3/templates/schema_definition.tmpl +++ b/pkg/codegen/generators/v3/templates/schema_definition.tmpl @@ -13,7 +13,7 @@ type {{ namify .Name }} struct { {{if $value.Description}} // Description: {{multiLineComment $value.Description}} {{else if and $value.ReferenceTo $value.ReferenceTo.Description}} - // Description: {{$value.ReferenceTo.Description}} + // Description: {{multiLineComment $value.ReferenceTo.Description}} {{end -}} {{namify $key}} {{if and (not (isRequired $ $key)) (ne $value.Type "array")}}*{{end}}{{template "schema-name" $value}} `json:"{{convertKey $key}}"{{generateValidateTags $value.Validations}}` {{end -}} diff --git a/pkg/codegen/generators/v3/templates/schema_name.tmpl b/pkg/codegen/generators/v3/templates/schema_name.tmpl index 818b5f4f..81e179ce 100644 --- a/pkg/codegen/generators/v3/templates/schema_name.tmpl +++ b/pkg/codegen/generators/v3/templates/schema_name.tmpl @@ -73,6 +73,7 @@ struct { {{- /* ----------------------- Unsupported usecase ---------------------- */ -}} {{- else -}} +interface{} // WARNING: potential error in AsyncAPI generation // Infos on type: {{ describeStruct . }} {{- end -}} diff --git a/pkg/utils/template/helpers.go b/pkg/utils/template/helpers.go index 83dc8a8c..7bfbb6c2 100644 --- a/pkg/utils/template/helpers.go +++ b/pkg/utils/template/helpers.go @@ -119,10 +119,10 @@ func HasField(v any, name string) bool { return rv.FieldByName(name).IsValid() } -// DescribeStruct will describe a struct in a human readable way using `%+v` +// DescribeStruct will describe a struct in a human-readable way using `%+v` // format from the standard library. func DescribeStruct(st any) string { - return fmt.Sprintf("%+v", st) + return MultiLineComment(fmt.Sprintf("%+v", st)) } // MultiLineComment will prefix each line of a comment with "// " in order to