-
Notifications
You must be signed in to change notification settings - Fork 0
/
task.go
51 lines (41 loc) · 1.24 KB
/
task.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package grpc
import (
"context"
"github.com/alexfalkowski/go-service/transport/grpc/trace/opentracing"
v1 "github.com/alexfalkowski/migrieren/api/migrieren/v1"
"github.com/alexfalkowski/migrieren/client"
"github.com/alexfalkowski/migrieren/client/task"
kzap "github.com/alexfalkowski/migrieren/client/v1/transport/grpc/logger/zap"
gopentracing "github.com/alexfalkowski/migrieren/client/v1/transport/grpc/trace/opentracing"
"go.uber.org/fx"
"go.uber.org/zap"
)
// TaskParams for gRPC.
type TaskParams struct {
fx.In
Client v1.ServiceClient
Config *client.Config
Tracer opentracing.Tracer
Logger *zap.Logger
}
// NewTask for gRPC.
func NewTask(params TaskParams) task.Task {
var t task.Task = &Task{client: params.Client, cfg: params.Config}
t = kzap.NewClient(params.Logger, params.Config, t)
t = gopentracing.NewClient(params.Config, params.Tracer, t)
return t
}
// Task for gRPC.
type Task struct {
client v1.ServiceClient
cfg *client.Config
}
// Perform migrating the database.
func (t *Task) Perform(ctx context.Context) ([]string, error) {
req := &v1.MigrateRequest{Database: t.cfg.Database, Version: t.cfg.Version}
resp, err := t.client.Migrate(ctx, req)
if err != nil {
return nil, err
}
return resp.Migration.Logs, nil
}