diff --git a/templates/project/app/service/http/http.go.tpl b/templates/project/app/service/http/http.go.tpl index a717688..83e8c82 100644 --- a/templates/project/app/service/http/http.go.tpl +++ b/templates/project/app/service/http/http.go.tpl @@ -53,7 +53,7 @@ type Service struct { App *app.Config Job *job.Job - Service *http.Service + Http *http.Service Initials []contracts.Initial `group:"initials"` Routes []contracts.HttpRoute `group:"routes"` } @@ -65,18 +65,18 @@ func Serve(cmd *cobra.Command, args []string) error { if svc.App.Mode == app.AppModeDevelopment { log.SetLevel(log.DebugLevel) - svc.Service.Engine.Get("/swagger/*", swagger.HandlerDefault) + svc.Http.Engine.Get("/swagger/*", swagger.HandlerDefault) } - svc.Service.Engine.Use(errorx.Middleware) - svc.Service.Engine.Use(favicon.New(favicon.Config{ + svc.Http.Engine.Use(errorx.Middleware) + svc.Http.Engine.Use(favicon.New(favicon.Config{ Data: []byte{}, })) - group := svc.Service.Engine.Group("") + group := svc.Http.Engine.Group("") for _, route := range svc.Routes { route.Register(group) } - return svc.Service.Serve() + return svc.Http.Serve() }) } diff --git a/templates/project/providers/job/provider.go.tpl b/templates/project/providers/job/provider.go.tpl index 032eeb4..e184c82 100644 --- a/templates/project/providers/job/provider.go.tpl +++ b/templates/project/providers/job/provider.go.tpl @@ -8,6 +8,7 @@ import ( "github.com/jackc/pgx/v5" "github.com/jackc/pgx/v5/pgxpool" + "github.com/pkg/errors" "github.com/riverqueue/river" "github.com/riverqueue/river/riverdriver/riverpgxv5" log "github.com/sirupsen/logrus" @@ -83,3 +84,28 @@ func (q *Job) Client() (*river.Client[pgx.Tx], error) { return q.client, nil } + +func (q *Job) Start(ctx context.Context) error { + client, err := q.Client() + if err != nil { + return errors.Wrap(err, "get client failed") + } + + if err := client.Start(ctx); err != nil { + return err + } + defer client.StopAndCancel(ctx) + + <-ctx.Done() + + return nil +} + +func (q *Job) StopAndCancel(ctx context.Context) error { + client, err := q.Client() + if err != nil { + return errors.Wrap(err, "get client failed") + } + + return client.StopAndCancel(ctx) +}