-
Notifications
You must be signed in to change notification settings - Fork 173
/
mongo_json.go
56 lines (47 loc) · 1.4 KB
/
mongo_json.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
package encoding
import (
"encoding/json"
"github.com/moiot/gravity/pkg/mongo/gtm"
"github.com/moiot/gravity/pkg/core"
)
type JsonMsg01 struct {
Version string `json:"version"`
Database string `json:"database"`
Collection string `json:"collection"`
UniqueSourceName string `json:"unique_source_name"`
Oplog *gtm.Op `json:"oplog"`
}
type JsonMsgVersion20 struct {
Version string `json:"version"`
Database string `json:"database"`
Collection string `json:"collection"`
Data map[string]interface{} `json:"data"`
Row map[string]interface{} `json:"row"`
}
type mongoJsonSerde struct {
}
func (s *mongoJsonSerde) Serialize(msg *core.Msg, version string) ([]byte, error) {
switch version {
case Version01:
jsonMsg := JsonMsg01{}
jsonMsg.Version = version
jsonMsg.Database = msg.Oplog.GetDatabase()
jsonMsg.Collection = msg.Oplog.GetCollection()
jsonMsg.UniqueSourceName = msg.Host
jsonMsg.Oplog = msg.Oplog
return json.Marshal(jsonMsg)
case Version20Alpha:
jsonMsg := JsonMsgVersion20{}
jsonMsg.Version = version
jsonMsg.Database = msg.Database
jsonMsg.Collection = msg.Table
jsonMsg.Data = msg.Oplog.Data
jsonMsg.Row = msg.Oplog.Row
return json.Marshal(jsonMsg)
default:
return nil, nil
}
}
func (*mongoJsonSerde) Deserialize(b []byte) (core.Msg, error) {
panic("implement me")
}