Skip to content

Commit bbbeccf

Browse files
committed
fix: improve schema name generation with mutex for thread safety
1 parent 1cb32ab commit bbbeccf

2 files changed

Lines changed: 17 additions & 2 deletions

File tree

pkg/spec/main.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,14 @@ func New() *Spec {
6060
},
6161
),
6262
openapi3gen.CreateTypeNameGenerator(func(t reflect.Type) string {
63+
var name string = ""
6364
if t.Name() == "" {
64-
return ""
65+
name = generateSchemaName()
66+
} else {
67+
name = t.Name()
6568
}
6669

67-
name := t.PkgPath() + "_" + t.Name()
70+
name = t.PkgPath() + "_" + name
6871

6972
name = strings.ReplaceAll(name, "github.com/go-simpl/simplapi/example/", "")
7073
name = strings.ReplaceAll(name, "/", "_")

pkg/spec/utils.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package spec
22

33
import (
4+
"fmt"
45
"mime/multipart"
56
"reflect"
7+
"sync"
68

79
"github.com/getkin/kin-openapi/openapi3"
810
)
@@ -33,3 +35,13 @@ func getSchemaForType(t reflect.Type) *openapi3.Schema {
3335

3436
return openapi3.NewStringSchema()
3537
}
38+
39+
var schemaNameCount int = 0
40+
var schemaNameMutex sync.Mutex
41+
42+
func generateSchemaName() string {
43+
schemaNameMutex.Lock()
44+
defer schemaNameMutex.Unlock()
45+
schemaNameCount++
46+
return fmt.Sprintf("Schema%d", schemaNameCount)
47+
}

0 commit comments

Comments
 (0)