Files
quyun-v2/backend/app/commands/grpc/grpc.go

64 lines
1.2 KiB
Go

package grpc
import (
"quyun/v2/app/commands"
"quyun/v2/app/errorx"
"quyun/v2/app/grpc/users"
"quyun/v2/providers/app"
"quyun/v2/providers/grpc"
"quyun/v2/providers/postgres"
logrus "github.com/sirupsen/logrus"
"github.com/spf13/cobra"
"go.ipao.vip/atom"
"go.ipao.vip/atom/container"
"go.ipao.vip/atom/contracts"
"go.uber.org/dig"
)
func defaultProviders() container.Providers {
return commands.Default(container.Providers{
postgres.DefaultProvider(),
grpc.DefaultProvider(),
}...)
}
func Command() atom.Option {
return atom.Command(
atom.Name("grpc"),
atom.Short("run grpc server"),
atom.RunE(Serve),
atom.Providers(
defaultProviders().
With(
users.Provide,
),
),
)
}
type Service struct {
dig.In
App *app.Config
Grpc *grpc.Grpc
Initials []contracts.Initial `group:"initials"`
}
func Serve(_ *cobra.Command, _ []string) error {
err := container.Container.Invoke(func(svc Service) error {
logrus.SetFormatter(&logrus.JSONFormatter{})
if svc.App.IsDevMode() {
logrus.SetLevel(logrus.DebugLevel)
}
return svc.Grpc.Serve()
})
if err != nil {
return errorx.ErrOperationFailed.WithCause(err)
}
return nil
}