From 087addad0e48c451d8f5ef13f89dd46d2d9792ef Mon Sep 17 00:00:00 2001 From: jeEt Date: Mon, 3 Aug 2020 18:55:50 +0530 Subject: [PATCH 1/2] Allow external client --- db/db.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/db/db.go b/db/db.go index 1ad1f04f7..39454607c 100644 --- a/db/db.go +++ b/db/db.go @@ -116,6 +116,17 @@ func (sp *SessionProvider) DB(name string) *mongo.Database { return sp.client.Database(name) } +// NewSessionProviderWithClient constructs a session provider, including a connected client. +func NewSessionProviderWithClient(client *mongo.Client) (*SessionProvider, error) { + err = client.Ping(context.Background(), nil) + if err != nil { + return nil, fmt.Errorf("could not connect to server: %v", err) + } + + // create the provider + return &SessionProvider{client: client}, nil +} + // NewSessionProvider constructs a session provider, including a connected client. func NewSessionProvider(opts options.ToolOptions) (*SessionProvider, error) { // finalize auth options, filling in missing passwords From d76ec33d1f13e95975eec1bdd7964d99af3fad79 Mon Sep 17 00:00:00 2001 From: jeEt Date: Mon, 3 Aug 2020 19:01:34 +0530 Subject: [PATCH 2/2] Update db.go --- db/db.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/db/db.go b/db/db.go index 39454607c..dd5cbc857 100644 --- a/db/db.go +++ b/db/db.go @@ -118,6 +118,10 @@ func (sp *SessionProvider) DB(name string) *mongo.Database { // NewSessionProviderWithClient constructs a session provider, including a connected client. func NewSessionProviderWithClient(client *mongo.Client) (*SessionProvider, error) { + if client == nil { + return nil, fmt.Errorf("provided client instance is nil") + } + err = client.Ping(context.Background(), nil) if err != nil { return nil, fmt.Errorf("could not connect to server: %v", err)