Files
atomctl/pkg/ast/provider/provider.go.tpl
2024-12-27 20:52:18 +08:00

44 lines
1000 B
Smarty

package {{.PkgName}}
import (
{{- range $pkg, $alias := .Imports }}
{{- if eq $alias "" }}
"{{$pkg}}"
{{- else }}
{{$alias}} "{{$pkg}}"
{{- end }}
{{- end }}
)
func Provide(opts ...opt.Option) error {
{{- range .Providers }}
if err := container.Container.Provide(func(
{{- range $key, $param := .InjectParams }}
{{$key}} {{$param.Star}}{{if eq $param.Package ""}}{{$param.Type}}{{else}}{{$param.PackageAlias}}.{{$param.Type}}{{end}},
{{- end }}
) ({{.ReturnType}}, error) {
obj := &{{.StructName}}{
{{- range $key, $param := .InjectParams }}
{{- if ne $key "__job"}}
{{$key}}: {{$key}},
{{- end}}
{{- end }}
}
{{- if .NeedPrepareFunc }}
if err := obj.Prepare(); err != nil {
return nil, err
}
{{- end }}
{{- if eq .Mode "job"}}
if err := river.AddWorkerSafely(__job.Workers, obj); err != nil {
return nil, err
}
{{- end }}
return obj, nil
}{{if .ProviderGroup}}, {{.ProviderGroup}}{{end}}); err != nil {
return err
}
{{- end }}
return nil
}