-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdb.mongo.go
More file actions
85 lines (71 loc) · 1.9 KB
/
db.mongo.go
File metadata and controls
85 lines (71 loc) · 1.9 KB
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
77
78
79
80
81
82
83
84
85
package mongodbhelper
import (
"context"
"go.mongodb.org/mongo-driver/bson"
"time"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"go.mongodb.org/mongo-driver/mongo/readpref"
"log"
)
type Mongodb struct {
DBName string
Client *mongo.Client
Database *mongo.Database
Collection *mongo.Collection
Context context.Context
}
type MongoInterface interface {
Connect(uri string) error
InsertElement(i interface{}) error
GetLatest() (interface{}, error)
GetLatestByKey(key string, value string, result interface{}) error
}
func NewMongoDB(name string) Mongodb {
return Mongodb{DBName: name}
}
func (mdb *Mongodb) Connect(uri string) error {
var err error
mdb.Client, err = mongo.NewClient(options.Client().ApplyURI(uri))
if err != nil {
log.Fatal(err)
return err
}
mdb.Context, _ = context.WithTimeout(context.Background(), 10*time.Second)
err = mdb.Client.Connect(mdb.Context)
if err != nil {
log.Fatal(err)
return err
}
err = mdb.Client.Ping(mdb.Context, readpref.Primary())
if err != nil {
log.Fatal(err)
return err
}
return nil
}
func (mdb *Mongodb) InsertElement(i interface{}) error {
_, err := mdb.Collection.InsertOne(mdb.Context, i)
return err
}
func (mdb *Mongodb) GetLatest() (interface{}, error) {
var i interface{}
err := mdb.Collection.FindOne(context.TODO(), bson.D{}).Decode(&i)
return i, err
}
func (mdb *Mongodb) GetLatestByKey(key string, value string, result interface{}) error {
filter := bson.D{{key, value}}
//var i interface{}
err := mdb.Collection.FindOne(context.TODO(), filter).Decode(&result)
return err
}
func (mdb *Mongodb) initDB(name string) {
mdb.Database = mdb.Client.Database(name)
}
func (mdb *Mongodb) initCollection(name string) {
mdb.Collection = mdb.Database.Collection(name)
}
func (mdb *Mongodb) InitDatabase(collectionName string) {
mdb.initDB(mdb.DBName)
mdb.initCollection(collectionName)
}