/
log_event.go
73 lines (66 loc) · 1.8 KB
/
log_event.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
package mongo
import (
"context"
v1 "github.com/klovercloud-ci-cd/core-engine/core/v1"
"github.com/klovercloud-ci-cd/core-engine/core/v1/repository"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo/options"
"log"
"time"
)
// LogEventCollection collection name
var (
LogEventCollection = "logEventCollection"
)
type logEventRepository struct {
manager *dmManager
timeout time.Duration
}
func (l logEventRepository) Store(event v1.LogEvent) {
coll := l.manager.Db.Collection(LogEventCollection)
_, err := coll.InsertOne(l.manager.Ctx, event)
if err != nil {
log.Println("[ERROR] Insert document:", err.Error())
}
}
func (l logEventRepository) GetByProcessId(processId string, option v1.LogEventQueryOption) ([]string, int64) {
var results []string
query := bson.M{
"$and": []bson.M{},
}
and := []bson.M{{"process_id": processId}}
if option.Step != "" {
and = append(and, map[string]interface{}{"step": option.Step})
}
query["$and"] = and
coll := l.manager.Db.Collection(LogEventCollection)
skip := option.Pagination.Page * option.Pagination.Limit
result, err := coll.Find(l.manager.Ctx, query, &options.FindOptions{
Limit: &option.Pagination.Limit,
Skip: &skip,
})
if err != nil {
log.Println(err.Error())
}
for result.Next(context.TODO()) {
elemValue := new(v1.LogEvent)
err := result.Decode(elemValue)
if err != nil {
log.Println("[ERROR]", err)
break
}
results = append(results, elemValue.Log)
}
count, err := coll.CountDocuments(l.manager.Ctx, query)
if err != nil {
log.Println(err.Error())
}
return results, count
}
// NewLogEventRepository returns LogEventRepository type object
func NewLogEventRepository(timeout int) repository.LogEventRepository {
return &logEventRepository{
manager: GetDmManager(),
timeout: time.Duration(timeout),
}
}