feat: add grpc

This commit is contained in:
Rogee
2024-12-31 17:57:06 +08:00
parent daf39f7255
commit 64c08249df
8 changed files with 221 additions and 59 deletions

View File

@@ -163,45 +163,6 @@ func Parse(source string) []Provider {
provider.ReturnType = "*" + provider.StructName
}
if providerDoc.Mode == "event" {
provider.Mode = "event"
modePkg := gomod.GetModuleName() + "/providers/events"
provider.Imports["git.ipao.vip/rogeecn/atom/contracts"] = ""
provider.Imports[modePkg] = ""
provider.ProviderGroup = "atom.GroupInitial"
provider.ReturnType = "contracts.Initial"
provider.InjectParams["__event"] = InjectParam{
Star: "*",
Type: "PubSub",
Package: modePkg,
PackageAlias: "events",
}
}
if providerDoc.Mode == "job" {
provider.Mode = "job"
modePkg := gomod.GetModuleName() + "/providers/job"
provider.Imports["git.ipao.vip/rogeecn/atom/contracts"] = ""
provider.Imports["github.com/riverqueue/river"] = ""
provider.Imports[modePkg] = ""
provider.ProviderGroup = "atom.GroupInitial"
provider.ReturnType = "contracts.Initial"
provider.InjectParams["__job"] = InjectParam{
Star: "*",
Type: "Job",
Package: modePkg,
PackageAlias: "job",
}
}
for _, field := range structType.Fields.List {
if field.Names == nil {
continue
@@ -289,6 +250,64 @@ func Parse(source string) []Provider {
provider.PkgName = node.Name.Name
provider.ProviderFile = filepath.Join(filepath.Dir(source), "provider.gen.go")
if providerDoc.Mode == "grpc" {
provider.Mode = "grpc"
modePkg := gomod.GetModuleName() + "/providers/grpc"
provider.Imports["git.ipao.vip/rogeecn/atom/contracts"] = ""
provider.Imports[modePkg] = ""
provider.ProviderGroup = "atom.GroupInitial"
provider.ReturnType = "contracts.Initial"
provider.InjectParams["__grpc"] = InjectParam{
Star: "*",
Type: "Grpc",
Package: modePkg,
PackageAlias: "grpc",
}
}
if providerDoc.Mode == "event" {
provider.Mode = "event"
modePkg := gomod.GetModuleName() + "/providers/events"
provider.Imports["git.ipao.vip/rogeecn/atom/contracts"] = ""
provider.Imports[modePkg] = ""
provider.ProviderGroup = "atom.GroupInitial"
provider.ReturnType = "contracts.Initial"
provider.InjectParams["__event"] = InjectParam{
Star: "*",
Type: "PubSub",
Package: modePkg,
PackageAlias: "events",
}
}
if providerDoc.Mode == "job" {
provider.Mode = "job"
modePkg := gomod.GetModuleName() + "/providers/job"
provider.Imports["git.ipao.vip/rogeecn/atom/contracts"] = ""
provider.Imports["github.com/riverqueue/river"] = ""
provider.Imports[modePkg] = ""
provider.ProviderGroup = "atom.GroupInitial"
provider.ReturnType = "contracts.Initial"
provider.InjectParams["__job"] = InjectParam{
Star: "*",
Type: "Job",
Package: modePkg,
PackageAlias: "job",
}
}
providers = append(providers, provider)
}

View File

@@ -19,7 +19,7 @@ func Provide(opts ...opt.Option) error {
) ({{.ReturnType}}, error) {
obj := &{{.StructName}}{
{{- range $key, $param := .InjectParams }}
{{- if and (ne $key "__job") (ne $key "__event")}}
{{- if and (ne $key "__job") (ne $key "__event") (ne $key "__grpc")}}
{{$key}}: {{$key}},
{{- end}}
{{- end }}
@@ -30,6 +30,10 @@ func Provide(opts ...opt.Option) error {
}
{{- end }}
{{- if eq .Mode "grpc"}}
userv1.RegisterUserServiceServer(__grpc.Server, obj)
{{- end }}
{{- if eq .Mode "event"}}
__event.Handle("handler:{{.StructName}}", obj.Topic(), obj.PublishToTopic(), obj.Handler)
{{- end }}
@@ -39,6 +43,7 @@ func Provide(opts ...opt.Option) error {
return nil, err
}
{{- end }}
return obj, nil
}{{if .ProviderGroup}}, {{.ProviderGroup}}{{end}}); err != nil {
return err