Merge pull request #1614 from micro/runtime-clients
Runtime Options: Replace client.DefaultClient
This commit is contained in:
commit
6078adb8bc
@ -3,7 +3,6 @@ package vpath
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
|
||||||
"net/http"
|
"net/http"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
@ -28,8 +27,6 @@ func (r *Resolver) Resolve(req *http.Request) (*resolver.Endpoint, error) {
|
|||||||
return nil, errors.New("unknown name")
|
return nil, errors.New("unknown name")
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Println(req.URL.Path)
|
|
||||||
|
|
||||||
parts := strings.Split(req.URL.Path[1:], "/")
|
parts := strings.Split(req.URL.Path[1:], "/")
|
||||||
if len(parts) == 1 {
|
if len(parts) == 1 {
|
||||||
return &resolver.Endpoint{
|
return &resolver.Endpoint{
|
||||||
|
@ -4,6 +4,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/micro/go-micro/v2/auth/provider"
|
"github.com/micro/go-micro/v2/auth/provider"
|
||||||
|
"github.com/micro/go-micro/v2/client"
|
||||||
"github.com/micro/go-micro/v2/store"
|
"github.com/micro/go-micro/v2/store"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -12,10 +13,12 @@ func NewOptions(opts ...Option) Options {
|
|||||||
for _, o := range opts {
|
for _, o := range opts {
|
||||||
o(&options)
|
o(&options)
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(options.Namespace) == 0 {
|
if len(options.Namespace) == 0 {
|
||||||
options.Namespace = DefaultNamespace
|
options.Namespace = DefaultNamespace
|
||||||
}
|
}
|
||||||
|
if options.Client == nil {
|
||||||
|
options.Client = client.DefaultClient
|
||||||
|
}
|
||||||
|
|
||||||
return options
|
return options
|
||||||
}
|
}
|
||||||
@ -39,6 +42,8 @@ type Options struct {
|
|||||||
LoginURL string
|
LoginURL string
|
||||||
// Store to back auth
|
// Store to back auth
|
||||||
Store store.Store
|
Store store.Store
|
||||||
|
// Client to use for RPC
|
||||||
|
Client client.Client
|
||||||
}
|
}
|
||||||
|
|
||||||
type Option func(o *Options)
|
type Option func(o *Options)
|
||||||
@ -100,6 +105,13 @@ func LoginURL(url string) Option {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WithClient sets the client to use when making requests
|
||||||
|
func WithClient(c client.Client) Option {
|
||||||
|
return func(o *Options) {
|
||||||
|
o.Client = c
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
type GenerateOptions struct {
|
type GenerateOptions struct {
|
||||||
// Metadata associated with the account
|
// Metadata associated with the account
|
||||||
Metadata map[string]string
|
Metadata map[string]string
|
||||||
|
@ -42,9 +42,11 @@ func (s *svc) Init(opts ...auth.Option) {
|
|||||||
o(&s.options)
|
o(&s.options)
|
||||||
}
|
}
|
||||||
|
|
||||||
dc := client.DefaultClient
|
if s.options.Client == nil {
|
||||||
s.auth = pb.NewAuthService("go.micro.auth", dc)
|
s.options.Client = client.DefaultClient
|
||||||
s.rule = pb.NewRulesService("go.micro.auth", dc)
|
}
|
||||||
|
s.auth = pb.NewAuthService("go.micro.auth", s.options.Client)
|
||||||
|
s.rule = pb.NewRulesService("go.micro.auth", s.options.Client)
|
||||||
|
|
||||||
// if we have a JWT public key passed as an option,
|
// if we have a JWT public key passed as an option,
|
||||||
// we can decode tokens with the type "JWT" locally
|
// we can decode tokens with the type "JWT" locally
|
||||||
|
@ -4,7 +4,6 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/micro/go-micro/v2/auth"
|
|
||||||
"github.com/micro/go-micro/v2/broker"
|
"github.com/micro/go-micro/v2/broker"
|
||||||
"github.com/micro/go-micro/v2/client/selector"
|
"github.com/micro/go-micro/v2/client/selector"
|
||||||
"github.com/micro/go-micro/v2/codec"
|
"github.com/micro/go-micro/v2/codec"
|
||||||
@ -17,7 +16,6 @@ type Options struct {
|
|||||||
ContentType string
|
ContentType string
|
||||||
|
|
||||||
// Plugged interfaces
|
// Plugged interfaces
|
||||||
Auth auth.Auth
|
|
||||||
Broker broker.Broker
|
Broker broker.Broker
|
||||||
Codecs map[string]codec.NewCodec
|
Codecs map[string]codec.NewCodec
|
||||||
Registry registry.Registry
|
Registry registry.Registry
|
||||||
@ -105,7 +103,6 @@ func NewOptions(options ...Option) Options {
|
|||||||
},
|
},
|
||||||
PoolSize: DefaultPoolSize,
|
PoolSize: DefaultPoolSize,
|
||||||
PoolTTL: DefaultPoolTTL,
|
PoolTTL: DefaultPoolTTL,
|
||||||
Auth: auth.DefaultAuth,
|
|
||||||
Broker: broker.DefaultBroker,
|
Broker: broker.DefaultBroker,
|
||||||
Selector: selector.DefaultSelector,
|
Selector: selector.DefaultSelector,
|
||||||
Registry: registry.DefaultRegistry,
|
Registry: registry.DefaultRegistry,
|
||||||
@ -126,13 +123,6 @@ func Broker(b broker.Broker) Option {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Auth to be used when making a request
|
|
||||||
func Auth(a auth.Auth) Option {
|
|
||||||
return func(o *Options) {
|
|
||||||
o.Auth = a
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Codec to be used to encode/decode requests for a given content type
|
// Codec to be used to encode/decode requests for a given content type
|
||||||
func Codec(contentType string, c codec.NewCodec) Option {
|
func Codec(contentType string, c codec.NewCodec) Option {
|
||||||
return func(o *Options) {
|
return func(o *Options) {
|
||||||
|
@ -13,6 +13,7 @@ import (
|
|||||||
"github.com/micro/go-micro/v2/client"
|
"github.com/micro/go-micro/v2/client"
|
||||||
"github.com/micro/go-micro/v2/client/selector"
|
"github.com/micro/go-micro/v2/client/selector"
|
||||||
"github.com/micro/go-micro/v2/config"
|
"github.com/micro/go-micro/v2/config"
|
||||||
|
configSrc "github.com/micro/go-micro/v2/config/source"
|
||||||
configSrv "github.com/micro/go-micro/v2/config/source/service"
|
configSrv "github.com/micro/go-micro/v2/config/source/service"
|
||||||
"github.com/micro/go-micro/v2/debug/profile"
|
"github.com/micro/go-micro/v2/debug/profile"
|
||||||
"github.com/micro/go-micro/v2/debug/profile/http"
|
"github.com/micro/go-micro/v2/debug/profile/http"
|
||||||
@ -500,7 +501,6 @@ func (c *cmd) Before(ctx *cli.Context) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
*c.opts.Auth = a()
|
*c.opts.Auth = a()
|
||||||
clientOpts = append(clientOpts, client.Auth(*c.opts.Auth))
|
|
||||||
serverOpts = append(serverOpts, server.Auth(*c.opts.Auth))
|
serverOpts = append(serverOpts, server.Auth(*c.opts.Auth))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -716,7 +716,7 @@ func (c *cmd) Before(ctx *cli.Context) error {
|
|||||||
(*c.opts.Auth).Init(authOpts...)
|
(*c.opts.Auth).Init(authOpts...)
|
||||||
|
|
||||||
if ctx.String("config") == "service" {
|
if ctx.String("config") == "service" {
|
||||||
opt := config.WithSource(configSrv.NewSource())
|
opt := config.WithSource(configSrv.NewSource(configSrc.WithClient(*c.opts.Client)))
|
||||||
if err := (*c.opts.Config).Init(opt); err != nil {
|
if err := (*c.opts.Config).Init(opt); err != nil {
|
||||||
logger.Fatalf("Error configuring config: %v", err)
|
logger.Fatalf("Error configuring config: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -100,6 +100,12 @@ func Registry(r *registry.Registry) Option {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Runtime(r *runtime.Runtime) Option {
|
||||||
|
return func(o *Options) {
|
||||||
|
o.Runtime = r
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func Transport(t *transport.Transport) Option {
|
func Transport(t *transport.Transport) Option {
|
||||||
return func(o *Options) {
|
return func(o *Options) {
|
||||||
o.Transport = t
|
o.Transport = t
|
||||||
|
@ -3,6 +3,7 @@ package source
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
|
"github.com/micro/go-micro/v2/client"
|
||||||
"github.com/micro/go-micro/v2/config/encoder"
|
"github.com/micro/go-micro/v2/config/encoder"
|
||||||
"github.com/micro/go-micro/v2/config/encoder/json"
|
"github.com/micro/go-micro/v2/config/encoder/json"
|
||||||
)
|
)
|
||||||
@ -13,6 +14,9 @@ type Options struct {
|
|||||||
|
|
||||||
// for alternative data
|
// for alternative data
|
||||||
Context context.Context
|
Context context.Context
|
||||||
|
|
||||||
|
// Client to use for RPC
|
||||||
|
Client client.Client
|
||||||
}
|
}
|
||||||
|
|
||||||
type Option func(o *Options)
|
type Option func(o *Options)
|
||||||
@ -21,6 +25,7 @@ func NewOptions(opts ...Option) Options {
|
|||||||
options := Options{
|
options := Options{
|
||||||
Encoder: json.NewEncoder(),
|
Encoder: json.NewEncoder(),
|
||||||
Context: context.Background(),
|
Context: context.Background(),
|
||||||
|
Client: client.DefaultClient,
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, o := range opts {
|
for _, o := range opts {
|
||||||
@ -36,3 +41,10 @@ func WithEncoder(e encoder.Encoder) Option {
|
|||||||
o.Encoder = e
|
o.Encoder = e
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WithClient sets the source client
|
||||||
|
func WithClient(c client.Client) Option {
|
||||||
|
return func(o *Options) {
|
||||||
|
o.Client = c
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -24,7 +24,7 @@ type service struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *service) Read() (set *source.ChangeSet, err error) {
|
func (m *service) Read() (set *source.ChangeSet, err error) {
|
||||||
client := proto.NewConfigService(m.serviceName, client.DefaultClient)
|
client := proto.NewConfigService(m.serviceName, m.opts.Client)
|
||||||
req, err := client.Read(context.Background(), &proto.ReadRequest{
|
req, err := client.Read(context.Background(), &proto.ReadRequest{
|
||||||
Namespace: m.namespace,
|
Namespace: m.namespace,
|
||||||
Path: m.path,
|
Path: m.path,
|
||||||
@ -37,7 +37,7 @@ func (m *service) Read() (set *source.ChangeSet, err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (m *service) Watch() (w source.Watcher, err error) {
|
func (m *service) Watch() (w source.Watcher, err error) {
|
||||||
client := proto.NewConfigService(m.serviceName, client.DefaultClient)
|
client := proto.NewConfigService(m.serviceName, m.opts.Client)
|
||||||
stream, err := client.Watch(context.Background(), &proto.WatchRequest{
|
stream, err := client.Watch(context.Background(), &proto.WatchRequest{
|
||||||
Namespace: m.namespace,
|
Namespace: m.namespace,
|
||||||
Path: m.path,
|
Path: m.path,
|
||||||
@ -87,6 +87,10 @@ func NewSource(opts ...source.Option) source.Source {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if options.Client == nil {
|
||||||
|
options.Client = client.DefaultClient
|
||||||
|
}
|
||||||
|
|
||||||
s := &service{
|
s := &service{
|
||||||
serviceName: addr,
|
serviceName: addr,
|
||||||
opts: options,
|
opts: options,
|
||||||
|
11
options.go
11
options.go
@ -14,6 +14,7 @@ import (
|
|||||||
"github.com/micro/go-micro/v2/debug/profile"
|
"github.com/micro/go-micro/v2/debug/profile"
|
||||||
"github.com/micro/go-micro/v2/debug/trace"
|
"github.com/micro/go-micro/v2/debug/trace"
|
||||||
"github.com/micro/go-micro/v2/registry"
|
"github.com/micro/go-micro/v2/registry"
|
||||||
|
"github.com/micro/go-micro/v2/runtime"
|
||||||
"github.com/micro/go-micro/v2/server"
|
"github.com/micro/go-micro/v2/server"
|
||||||
"github.com/micro/go-micro/v2/store"
|
"github.com/micro/go-micro/v2/store"
|
||||||
"github.com/micro/go-micro/v2/transport"
|
"github.com/micro/go-micro/v2/transport"
|
||||||
@ -29,6 +30,7 @@ type Options struct {
|
|||||||
Server server.Server
|
Server server.Server
|
||||||
Store store.Store
|
Store store.Store
|
||||||
Registry registry.Registry
|
Registry registry.Registry
|
||||||
|
Runtime runtime.Runtime
|
||||||
Transport transport.Transport
|
Transport transport.Transport
|
||||||
Profile profile.Profile
|
Profile profile.Profile
|
||||||
|
|
||||||
@ -55,6 +57,7 @@ func newOptions(opts ...Option) Options {
|
|||||||
Server: server.DefaultServer,
|
Server: server.DefaultServer,
|
||||||
Store: store.DefaultStore,
|
Store: store.DefaultStore,
|
||||||
Registry: registry.DefaultRegistry,
|
Registry: registry.DefaultRegistry,
|
||||||
|
Runtime: runtime.DefaultRuntime,
|
||||||
Transport: transport.DefaultTransport,
|
Transport: transport.DefaultTransport,
|
||||||
Context: context.Background(),
|
Context: context.Background(),
|
||||||
Signal: true,
|
Signal: true,
|
||||||
@ -152,7 +155,6 @@ func Tracer(t trace.Tracer) Option {
|
|||||||
func Auth(a auth.Auth) Option {
|
func Auth(a auth.Auth) Option {
|
||||||
return func(o *Options) {
|
return func(o *Options) {
|
||||||
o.Auth = a
|
o.Auth = a
|
||||||
o.Client.Init(client.Auth(a))
|
|
||||||
o.Server.Init(server.Auth(a))
|
o.Server.Init(server.Auth(a))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -182,6 +184,13 @@ func Transport(t transport.Transport) Option {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Runtime sets the runtime
|
||||||
|
func Runtime(r runtime.Runtime) Option {
|
||||||
|
return func(o *Options) {
|
||||||
|
o.Runtime = r
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Convenience options
|
// Convenience options
|
||||||
|
|
||||||
// Address sets the address of the server
|
// Address sets the address of the server
|
||||||
|
@ -3,6 +3,8 @@ package runtime
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"io"
|
"io"
|
||||||
|
|
||||||
|
"github.com/micro/go-micro/v2/client"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Option func(o *Options)
|
type Option func(o *Options)
|
||||||
@ -17,6 +19,8 @@ type Options struct {
|
|||||||
Source string
|
Source string
|
||||||
// Base image to use
|
// Base image to use
|
||||||
Image string
|
Image string
|
||||||
|
// Client to use when making requests
|
||||||
|
Client client.Client
|
||||||
}
|
}
|
||||||
|
|
||||||
// WithSource sets the base image / repository
|
// WithSource sets the base image / repository
|
||||||
@ -47,6 +51,13 @@ func WithImage(t string) Option {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WithClient sets the client to use
|
||||||
|
func WithClient(c client.Client) Option {
|
||||||
|
return func(o *Options) {
|
||||||
|
o.Client = c
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
type CreateOption func(o *CreateOptions)
|
type CreateOption func(o *CreateOptions)
|
||||||
|
|
||||||
type ReadOption func(o *ReadOptions)
|
type ReadOption func(o *ReadOptions)
|
||||||
|
@ -24,6 +24,9 @@ func (s *svc) Init(opts ...runtime.Option) error {
|
|||||||
o(&s.options)
|
o(&s.options)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// reset the runtime as the client could have changed
|
||||||
|
s.runtime = pb.NewRuntimeService(runtime.DefaultName, s.options.Client)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -278,19 +281,17 @@ func (s *svc) String() string {
|
|||||||
|
|
||||||
// NewRuntime creates new service runtime and returns it
|
// NewRuntime creates new service runtime and returns it
|
||||||
func NewRuntime(opts ...runtime.Option) runtime.Runtime {
|
func NewRuntime(opts ...runtime.Option) runtime.Runtime {
|
||||||
// get default options
|
var options runtime.Options
|
||||||
options := runtime.Options{}
|
|
||||||
|
|
||||||
// apply requested options
|
|
||||||
for _, o := range opts {
|
for _, o := range opts {
|
||||||
o(&options)
|
o(&options)
|
||||||
}
|
}
|
||||||
|
if options.Client == nil {
|
||||||
// create default client
|
options.Client = client.DefaultClient
|
||||||
cli := client.DefaultClient
|
}
|
||||||
|
|
||||||
return &svc{
|
return &svc{
|
||||||
options: options,
|
options: options,
|
||||||
runtime: pb.NewRuntimeService(runtime.DefaultName, cli),
|
runtime: pb.NewRuntimeService(runtime.DefaultName, options.Client),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
19
service.go
19
service.go
@ -3,7 +3,7 @@ package micro
|
|||||||
import (
|
import (
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
"runtime"
|
rtime "runtime"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
@ -15,6 +15,7 @@ import (
|
|||||||
"github.com/micro/go-micro/v2/debug/trace"
|
"github.com/micro/go-micro/v2/debug/trace"
|
||||||
"github.com/micro/go-micro/v2/logger"
|
"github.com/micro/go-micro/v2/logger"
|
||||||
"github.com/micro/go-micro/v2/plugin"
|
"github.com/micro/go-micro/v2/plugin"
|
||||||
|
"github.com/micro/go-micro/v2/runtime"
|
||||||
"github.com/micro/go-micro/v2/server"
|
"github.com/micro/go-micro/v2/server"
|
||||||
"github.com/micro/go-micro/v2/store"
|
"github.com/micro/go-micro/v2/store"
|
||||||
signalutil "github.com/micro/go-micro/v2/util/signal"
|
signalutil "github.com/micro/go-micro/v2/util/signal"
|
||||||
@ -98,6 +99,7 @@ func (s *service) Init(opts ...Option) {
|
|||||||
cmd.Auth(&s.opts.Auth),
|
cmd.Auth(&s.opts.Auth),
|
||||||
cmd.Broker(&s.opts.Broker),
|
cmd.Broker(&s.opts.Broker),
|
||||||
cmd.Registry(&s.opts.Registry),
|
cmd.Registry(&s.opts.Registry),
|
||||||
|
cmd.Runtime(&s.opts.Runtime),
|
||||||
cmd.Transport(&s.opts.Transport),
|
cmd.Transport(&s.opts.Transport),
|
||||||
cmd.Client(&s.opts.Client),
|
cmd.Client(&s.opts.Client),
|
||||||
cmd.Config(&s.opts.Config),
|
cmd.Config(&s.opts.Config),
|
||||||
@ -112,13 +114,10 @@ func (s *service) Init(opts ...Option) {
|
|||||||
name := s.opts.Cmd.App().Name
|
name := s.opts.Cmd.App().Name
|
||||||
s.opts.Store.Init(store.Table(name))
|
s.opts.Store.Init(store.Table(name))
|
||||||
|
|
||||||
// TODO: replace Cmd.Init with config.Load
|
// Set the client for the micro clients
|
||||||
// Right now we're just going to load a token
|
s.opts.Auth.Init(auth.WithClient(s.Client()))
|
||||||
// May need to re-read value on change
|
s.opts.Runtime.Init(runtime.WithClient(s.Client()))
|
||||||
// TODO: should be scoped to micro/auth/token
|
s.opts.Store.Init(store.WithClient(s.Client()))
|
||||||
// if tk, _ := config.Get("token"); len(tk) > 0 {
|
|
||||||
// s.opts.Auth.Init(auth.ServiceToken(tk))
|
|
||||||
// }
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -192,9 +191,9 @@ func (s *service) Run() error {
|
|||||||
// start the profiler
|
// start the profiler
|
||||||
if s.opts.Profile != nil {
|
if s.opts.Profile != nil {
|
||||||
// to view mutex contention
|
// to view mutex contention
|
||||||
runtime.SetMutexProfileFraction(5)
|
rtime.SetMutexProfileFraction(5)
|
||||||
// to view blocking profile
|
// to view blocking profile
|
||||||
runtime.SetBlockProfileRate(1)
|
rtime.SetBlockProfileRate(1)
|
||||||
|
|
||||||
if err := s.opts.Profile.Start(); err != nil {
|
if err := s.opts.Profile.Start(); err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -3,6 +3,8 @@ package store
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/micro/go-micro/v2/client"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Options contains configuration for the Store
|
// Options contains configuration for the Store
|
||||||
@ -17,6 +19,8 @@ type Options struct {
|
|||||||
Table string
|
Table string
|
||||||
// Context should contain all implementation specific options, using context.WithValue.
|
// Context should contain all implementation specific options, using context.WithValue.
|
||||||
Context context.Context
|
Context context.Context
|
||||||
|
// Client to use for RPC
|
||||||
|
Client client.Client
|
||||||
}
|
}
|
||||||
|
|
||||||
// Option sets values in Options
|
// Option sets values in Options
|
||||||
@ -52,6 +56,13 @@ func WithContext(c context.Context) Option {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WithClient sets the stores client to use for RPC
|
||||||
|
func WithClient(c client.Client) Option {
|
||||||
|
return func(o *Options) {
|
||||||
|
o.Client = c
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// ReadOptions configures an individual Read operation
|
// ReadOptions configures an individual Read operation
|
||||||
type ReadOptions struct {
|
type ReadOptions struct {
|
||||||
Database, Table string
|
Database, Table string
|
||||||
|
@ -219,12 +219,16 @@ func NewStore(opts ...store.Option) store.Store {
|
|||||||
o(&options)
|
o(&options)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if options.Client == nil {
|
||||||
|
options.Client = client.DefaultClient
|
||||||
|
}
|
||||||
|
|
||||||
service := &serviceStore{
|
service := &serviceStore{
|
||||||
options: options,
|
options: options,
|
||||||
Database: options.Database,
|
Database: options.Database,
|
||||||
Table: options.Table,
|
Table: options.Table,
|
||||||
Nodes: options.Nodes,
|
Nodes: options.Nodes,
|
||||||
Client: pb.NewStoreService("go.micro.store", client.DefaultClient),
|
Client: pb.NewStoreService("go.micro.store", options.Client),
|
||||||
}
|
}
|
||||||
|
|
||||||
return service
|
return service
|
||||||
|
Loading…
Reference in New Issue
Block a user