refactor: manager server new instance (#464)

Signed-off-by: Gaius <gaius.qi@gmail.com>
This commit is contained in:
Gaius 2021-07-19 15:29:34 +08:00
parent b24f9dc0bd
commit 013ccfd412
No known key found for this signature in database
GPG Key ID: 8B4E5D1290FA2FFB
3 changed files with 13 additions and 66 deletions

View File

@ -57,17 +57,10 @@ func New(cfg *config.Config) (*Server, error) {
searcher := searcher.New() searcher := searcher.New()
// Initialize REST service // Initialize REST service
restService := service.NewREST( restService := service.NewREST(db, cache)
service.WithDatabase(db),
service.WithCache(cache),
)
// Initialize GRPC service // Initialize GRPC service
grpcService := service.NewGRPC( grpcService := service.NewGRPC(db, cache, searcher)
service.GRPCWithDatabase(db),
service.GRPCWithCache(cache),
service.GRPCWithSearcher(searcher),
)
// Initialize router // Initialize router
router, err := initRouter(cfg.Verbose, restService) router, err := initRouter(cfg.Verbose, restService)

View File

@ -64,31 +64,11 @@ type rest struct {
cache *cache.Cache cache *cache.Cache
} }
// Option is a functional option for rest
type Option func(s *rest)
// WithDatabase set the database client
func WithDatabase(database *database.Database) Option {
return func(s *rest) {
s.db = database.DB
s.rdb = database.RDB
}
}
// WithCache set the cache client
func WithCache(cache *cache.Cache) Option {
return func(s *rest) {
s.cache = cache
}
}
// NewREST returns a new REST instence // NewREST returns a new REST instence
func NewREST(options ...Option) REST { func NewREST(database *database.Database, cache *cache.Cache) REST {
s := &rest{} return &rest{
db: database.DB,
for _, opt := range options { rdb: database.RDB,
opt(s) cache: cache,
} }
return s
} }

View File

@ -27,40 +27,14 @@ type GRPC struct {
searcher searcher.Searcher searcher searcher.Searcher
} }
// Option is a functional option for rest
type GRPCOption func(s *GRPC)
// GRPCWithDatabase set the database client
func GRPCWithDatabase(database *database.Database) GRPCOption {
return func(s *GRPC) {
s.db = database.DB
s.rdb = database.RDB
}
}
// GRPCWithCache set the cache client
func GRPCWithCache(cache *cache.Cache) GRPCOption {
return func(s *GRPC) {
s.cache = cache
}
}
// GRPCWithSearcher set search client
func GRPCWithSearcher(searcher searcher.Searcher) GRPCOption {
return func(s *GRPC) {
s.searcher = searcher
}
}
// NewREST returns a new REST instence // NewREST returns a new REST instence
func NewGRPC(options ...GRPCOption) *GRPC { func NewGRPC(database *database.Database, cache *cache.Cache, searcher searcher.Searcher) *GRPC {
s := &GRPC{} return &GRPC{
db: database.DB,
for _, opt := range options { rdb: database.RDB,
opt(s) cache: cache,
searcher: searcher,
} }
return s
} }
func (s *GRPC) GetCDN(ctx context.Context, req *manager.GetCDNRequest) (*manager.CDN, error) { func (s *GRPC) GetCDN(ctx context.Context, req *manager.GetCDNRequest) (*manager.CDN, error) {