add code grpc to manage new collection db groupMember

This commit is contained in:
soukainna
2022-12-19 09:14:31 +01:00
parent daf39bc067
commit 57540f2587
4 changed files with 325 additions and 0 deletions

64
grpcapi/groupsmember.go Normal file
View File

@@ -0,0 +1,64 @@
package grpcapi
import (
"encoding/json"
"fmt"
"git.coopgo.io/coopgo-platform/groups-management/storage"
"google.golang.org/protobuf/encoding/protojson"
structpb "google.golang.org/protobuf/types/known/structpb"
)
func (g GroupMember) ToStorageType() storage.GroupMember {
group := storage.GroupMember{
ID: g.Memberid,
Groupid: g.Groupid,
Data: map[string]any{},
}
for k, d := range g.Data.GetFields() {
jsondata, err := protojson.Marshal(d)
if err != nil {
fmt.Println(err)
break
}
var data any
json.Unmarshal(jsondata, &data)
group.Data[k] = data
}
return group
}
func GroupFromStorageTypeMember(group *storage.GroupMember) (*GroupMember, error) {
d, err := sanitizeDatta(group.Data)
if err != nil {
return nil, err
}
data, err := structpb.NewStruct(d)
if err != nil {
fmt.Println(err)
return nil, err
}
return &GroupMember{
Memberid: group.ID,
Groupid: group.Groupid,
Data: data,
}, nil
}
func sanitizeDatta(data map[string]any) (d map[string]any, err error) {
j, err := json.Marshal(data)
if err != nil {
return nil, err
}
if err = json.Unmarshal(j, &d); err != nil {
return nil, err
}
return d, nil
}