/
mongo.go
76 lines (59 loc) · 1.66 KB
/
mongo.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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package mgom
import (
"context"
"fmt"
"time"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
const Version = "0.0.2"
// MongoInstance contains the Mongo client and database objects
type MongoInstance struct {
DbName string
BaseUrl string
Uri string
Context context.Context
Client *mongo.Client
Db *mongo.Database
Connected bool
}
func (mg *MongoInstance) SetDbName(value string) *MongoInstance {
mg.DbName = value
return mg
}
func (mg *MongoInstance) SetBaseUrl(value string) *MongoInstance {
mg.BaseUrl = value
return mg
}
func (mg *MongoInstance) SetUri() *MongoInstance {
mg.Uri = mg.BaseUrl + mg.DbName
return mg
}
func (mg *MongoInstance) GetCollection(value string) *mongo.Collection {
return mg.Db.Collection(value)
}
func NewMongoInstance(dbName, baseUrl string) *MongoInstance {
mg := &MongoInstance{
Connected: false,
}
return mg.SetDbName(dbName).SetBaseUrl(baseUrl).SetUri()
}
func (mg *MongoInstance) Connect() Error {
var err error
var cancel context.CancelFunc
mg.Client, err = mongo.Connect(context.Background(), options.Client().ApplyURI(mg.Uri))
mg.Context, cancel = context.WithTimeout(context.Background(), 30*time.Second)
defer cancel()
mg.Db = mg.Client.Database(mg.DbName)
//mg.ListDatabaseNames()
mg.Connected = true
return handleErrors(CONNECT, err)
}
func (mg *MongoInstance) ListDatabaseNames() Error {
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
defer cancel()
databases, err := mg.Client.ListDatabaseNames(ctx, bson.M{})
fmt.Println("databases:", databases)
return handleErrors(DEFAULT, err)
}