/
mongo_database.go
40 lines (33 loc) · 1.04 KB
/
mongo_database.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
package database
import (
"context"
"github.com/yunussandikci/go-pure-api/app/common"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"go.mongodb.org/mongo-driver/x/mongo/driver/connstring"
)
type MongoDatabase interface {
GetCollection(collection string) *mongo.Collection
Disconnect()
}
type mongoDatabase struct {
client *mongo.Client
connectionString *connstring.ConnString
}
func (m mongoDatabase) GetCollection(collection string) *mongo.Collection {
return m.client.Database(m.connectionString.Database).Collection(collection)
}
func NewMongoDatabase() MongoDatabase {
connectionString, parseErr := connstring.Parse(common.GetMongoURI())
if parseErr != nil {
panic(parseErr)
}
client, connectErr := mongo.Connect(context.Background(), options.Client().ApplyURI(connectionString.Original))
if connectErr != nil {
panic(connectErr)
}
return &mongoDatabase{client: client, connectionString: &connectionString}
}
func (m mongoDatabase) Disconnect() {
_ = m.client.Disconnect(context.Background())
}