fix pointer for interfaces

This commit is contained in:
franklin 2021-02-12 16:18:21 +01:00
parent c183810bc6
commit c4dd132ff1
3 changed files with 13 additions and 6 deletions

11
go.go
View File

@ -197,15 +197,20 @@ func renderTSRPCServiceProxies(services ServiceList, fullPackageName string, pac
continue
}
servicePointer := "*"
if service.IsInterface {
servicePointer = ""
}
proxyName := service.Name + "GoTSRPCProxy"
g.l(`
type ` + proxyName + ` struct {
EndPoint string
allowOrigin []string
service *` + service.Name + `
service ` + servicePointer + service.Name + `
}
func NewDefault` + proxyName + `(service *` + service.Name + `, allowOrigin []string) *` + proxyName + ` {
func NewDefault` + proxyName + `(service ` + servicePointer + service.Name + `, allowOrigin []string) *` + proxyName + ` {
return &` + proxyName + `{
EndPoint: "` + service.Endpoint + `",
allowOrigin : allowOrigin,
@ -214,7 +219,7 @@ func renderTSRPCServiceProxies(services ServiceList, fullPackageName string, pac
}
func New` + proxyName + `(service *` + service.Name + `, endpoint string, allowOrigin []string) *` + proxyName + ` {
func New` + proxyName + `(service ` + servicePointer + service.Name + `, endpoint string, allowOrigin []string) *` + proxyName + ` {
return &` + proxyName + `{
EndPoint: endpoint,
allowOrigin : allowOrigin,

View File

@ -52,9 +52,10 @@ type Field struct {
}
type Service struct {
Name string
Methods ServiceMethods
Endpoint string
Name string
Methods ServiceMethods
Endpoint string
IsInterface bool
}
type ServiceMethods []*Method

View File

@ -69,6 +69,7 @@ func readServiceFile(file *ast.File, packageName string, services ServiceList) e
ident := typeSpec.Name
trace("that is an interface named", ident.Name)
if service, ok := findService(ident.Name); ok {
service.IsInterface = true
if iSpec, ok := typeSpec.Type.(*ast.InterfaceType); ok {
for _, fieldDecl := range iSpec.Methods.List {