controller/mutators/module.go (41 lines of code) (raw):

package mutators import ( "github.com/uber/aresdb/cluster/kvstore" "github.com/uber/aresdb/controller/mutators/common" "github.com/uber/aresdb/controller/mutators/etcd" "go.uber.org/fx" "go.uber.org/zap" ) // Result holds all mutators type Result struct { fx.Out JobMutator common.JobMutator NamespaceMutator common.NamespaceMutator SubscriberMutator common.SubscriberMutator SchemaMutator common.TableSchemaMutator IngestionAssignmentMutator common.IngestionAssignmentMutator MembershipMutator common.MembershipMutator PlacementMutator common.PlacementMutator EnumMutator common.EnumMutator } // Params represents params to initialize all mutators type Params struct { fx.In EtcdClient *kvstore.EtcdClient Logger *zap.SugaredLogger } // InitMutators initialize mutators func InitMutators(param Params) Result { if param.EtcdClient == nil { param.Logger.Fatal("Non usable clients provided") } result := Result{ JobMutator: etcd.NewJobMutator(param.EtcdClient.TxnStore, param.Logger), SchemaMutator: etcd.NewTableSchemaMutator(param.EtcdClient.TxnStore, param.Logger), SubscriberMutator: etcd.NewSubscriberMutator(param.EtcdClient), IngestionAssignmentMutator: etcd.NewIngestionAssignmentMutator(param.EtcdClient.TxnStore), NamespaceMutator: etcd.NewNamespaceMutator(param.EtcdClient.TxnStore), MembershipMutator: etcd.NewMembershipMutator(param.EtcdClient), PlacementMutator: etcd.NewPlacementMutator(param.EtcdClient), } result.EnumMutator = etcd.NewEnumMutator(param.EtcdClient.TxnStore, result.SchemaMutator) return result } // Module defines business module var Module = fx.Provide(InitMutators)