Skip to content

Commit

Permalink
feat(types): support pointer type
Browse files Browse the repository at this point in the history
  • Loading branch information
jaronnie committed Jul 10, 2024
1 parent b1c0c00 commit 910ca74
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 20 deletions.
16 changes: 14 additions & 2 deletions parser/parser.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,9 @@ func getHandlerTypes(apiSpec *spec.ApiSpec, handlerType spec.Type) []spec.Type {
switch t := handlerType.(type) {
case spec.PointerType:
if tt, ok := t.Type.(spec.DefineStruct); ok {
types = append(types, tt)
for _, m := range tt.Members {
defineStruct := findDefineStructFromPointerTypeRawName(apiSpec, tt.RawName)
types = append(types, defineStruct)
for _, m := range defineStruct.Members {
types = append(types, getHandlerTypes(apiSpec, m.Type)...)
}
}
Expand Down Expand Up @@ -109,3 +110,14 @@ func removeDuplicateTypes(types []spec.Type) []spec.Type {

return newTypes
}

func findDefineStructFromPointerTypeRawName(apiSpec *spec.ApiSpec, rawName string) spec.DefineStruct {
for _, s := range apiSpec.Types {
if ds, ok := s.(spec.DefineStruct); ok {
if ds.RawName == rawName {
return ds
}
}
}
return spec.DefineStruct{}
}
15 changes: 11 additions & 4 deletions parser/testdata/desc/test.api
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,14 @@ type User {
username string `json:"username"`
}

type EmbededError3 {
message string `json:"message"`
}

type Error3 {
pointerType *EmbededError3 `json:"pointerType"`
}

@server (
prefix: /api/v1
group: err1
Expand All @@ -23,10 +31,9 @@ service test {

@server (
prefix: /api/v1
group: err2
group: err3
)
service test {
@doc "fix, support pointer type"
@handler Error2
post /test/error2 () returns (*User)
@handler Error3
post /test/error3 () returns (Error3)
}
14 changes: 0 additions & 14 deletions parser/testdata/internal/types/err2.types.go

This file was deleted.

18 changes: 18 additions & 0 deletions parser/testdata/internal/types/err3.types.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions parser/testdata/internal/types/types.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 910ca74

Please sign in to comment.