-
Notifications
You must be signed in to change notification settings - Fork 31
/
translate.go
100 lines (86 loc) · 2.43 KB
/
translate.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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
package jdocs
import (
"github.com/digital-dream-labs/vector-cloud/internal/clad/cloud"
pb "github.com/digital-dream-labs/api/go/jdocspb"
)
type cladDoc cloud.Doc
type pbDoc pb.Jdoc
type cladWriteReq cloud.WriteRequest
type cladReadReq cloud.ReadRequest
type cladDeleteReq cloud.DeleteRequest
type protoWriteResp pb.WriteDocResp
type protoWriteStatus pb.WriteDocResp_Status
type protoReadResp pb.ReadDocsResp
type protoReadStatus pb.ReadDocsResp_Status
func (c *cladDoc) toProto() *pb.Jdoc {
return &pb.Jdoc{
DocVersion: c.DocVersion,
FmtVersion: c.FmtVersion,
ClientMetadata: c.Metadata,
JsonDoc: c.JsonDoc,
}
}
func (p *pbDoc) toClad() *cloud.Doc {
return &cloud.Doc{
DocVersion: p.DocVersion,
FmtVersion: p.FmtVersion,
Metadata: p.ClientMetadata,
JsonDoc: p.JsonDoc,
}
}
func (c *cladWriteReq) toProto() *pb.WriteDocReq {
return &pb.WriteDocReq{
UserId: c.Account,
Thing: c.Thing,
DocName: c.DocName,
Doc: (*cladDoc)(&c.Doc).toProto(),
}
}
func (c *cladReadReq) toProto() *pb.ReadDocsReq {
ret := &pb.ReadDocsReq{
UserId: c.Account,
Thing: c.Thing,
}
ret.Items = make([]*pb.ReadDocsReq_Item, len(c.Items))
for i, c := range c.Items {
ret.Items[i] = &pb.ReadDocsReq_Item{
DocName: c.DocName,
MyDocVersion: c.MyDocVersion,
}
}
return ret
}
func (c *cladDeleteReq) toProto() *pb.DeleteDocReq {
return &pb.DeleteDocReq{
UserId: c.Account,
Thing: c.Thing,
DocName: c.DocName,
}
}
func (p *protoWriteResp) toClad() *cloud.WriteResponse {
return &cloud.WriteResponse{
LatestVersion: p.LatestDocVersion,
Status: writeStatusMap[p.Status],
}
}
func (p *protoReadResp) toClad() *cloud.ReadResponse {
ret := &cloud.ReadResponse{}
ret.Items = make([]cloud.ResponseDoc, len(p.Items))
for i, p := range p.Items {
ret.Items[i] = cloud.ResponseDoc{
Status: readStatusMap[p.Status],
Doc: *(*pbDoc)(p.Doc).toClad(),
}
}
return ret
}
var readStatusMap = map[pb.ReadDocsResp_Status]cloud.ReadStatus{
pb.ReadDocsResp_UNCHANGED: cloud.ReadStatus_Unchanged,
pb.ReadDocsResp_CHANGED: cloud.ReadStatus_Changed,
pb.ReadDocsResp_NOT_FOUND: cloud.ReadStatus_NotFound,
}
var writeStatusMap = map[pb.WriteDocResp_Status]cloud.WriteStatus{
pb.WriteDocResp_ACCEPTED: cloud.WriteStatus_Accepted,
pb.WriteDocResp_REJECTED_BAD_DOC_VERSION: cloud.WriteStatus_RejectedDocVersion,
pb.WriteDocResp_REJECTED_BAD_FMT_VERSION: cloud.WriteStatus_RejectedFmtVersion,
}