/
entity.go
67 lines (57 loc) · 1.53 KB
/
entity.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
package model
import (
"time"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
)
// Praiseable 可被点赞的
type Praiseable struct {
Up uint64 `json:"up" bson:"up"`
Down uint64 `json:"down" bson:"down"`
Weighted uint64 `json:"weighted" bson:"weighted"`
}
// Entity example
type Entity struct {
CreateTime time.Time `json:"createTime" example:"2020-10-1" bson:"create_time,omitempty"`
UpdateTime time.Time `json:"updateTime" example:"2020-10-1" bson:"update_time,omitempty"`
IsDeleted bool `json:"is_deleted,omitempty" example:"true" bson:"isdeleted"`
}
// IndexModels Index Models to index entity
var IndexModels = []mongo.IndexModel{
{Keys: bson.M{"entity_info.create_time": -1}},
{Keys: bson.M{"entity_info.update_time": -1}},
{Keys: bson.M{"entity_info.isdeleted": 1}},
}
// InitEntity init new entity
func InitEntity() Entity {
t := time.Now()
return Entity{t, t, false}
}
// Create create entity
func (e *Entity) Create() {
e.CreateTime = time.Now()
e.UpdateTime = e.CreateTime
e.IsDeleted = false
}
// Set set entity with exist create time
func (e *Entity) Set(createTime time.Time) {
e.CreateTime = createTime
e.UpdateTime = e.CreateTime
e.IsDeleted = false
}
// Update update entity
func (e *Entity) Update() {
if IsTimeValid(e.CreateTime) {
e.UpdateTime = time.Now()
} else {
e.Create()
}
}
// Judge whether time exists
func IsTimeValid(time2 time.Time) (valid bool) {
valid = false
if time2.After(time.Date(2020, 1, 1, 0, 0, 0, 0, time.UTC)) {
valid = true
}
return
}