diff --git a/db/db.go b/db/db.go index 1ad1f04f7..dd5cbc857 100644 --- a/db/db.go +++ b/db/db.go @@ -116,6 +116,21 @@ 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) { + 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) + } + + // 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