-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwait-for-mongodb.go
41 lines (35 loc) · 1.04 KB
/
wait-for-mongodb.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package main
import (
"context"
"fmt"
"log"
"time"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"go.mongodb.org/mongo-driver/mongo/readpref"
)
// MongoDBConnection for MongoDB
type MongoDBConnection struct{}
func (s MongoDBConnection) connect(host string, port int, user string, password string, database string) (bool, error) {
if port < 0 {
port = 27017
}
var connectionInfo string
if user != "" && password != "" {
connectionInfo = fmt.Sprintf("mongodb://%s:%s@%s:%d/%s?authSource=admin", user, password, host, port, database)
} else {
connectionInfo = fmt.Sprintf("mongodb://%s:%d/%s?authSource=admin", host, port, database)
}
ctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
client, err := mongo.Connect(ctx, options.Client().ApplyURI(connectionInfo))
if err != nil {
log.Printf("Error: %s", err.Error())
return false, nil
}
err = client.Ping(ctx, readpref.Primary())
if err != nil {
log.Printf("Error: %s", err.Error())
return false, nil
}
return true, nil
}