초기 파티 document 설정 가능

This commit is contained in:
2023-10-26 20:53:32 +09:00
parent bd2408c66f
commit dffe1cfee5

View File

@ -369,6 +369,7 @@ func (gp *groupParty) InviteToParty(w http.ResponseWriter, r *http.Request) {
Target primitive.ObjectID
Inviter bson.M
Invitee bson.M
InitialPartyDoc bson.M
}
if err := gocommon.MakeDecoder(r).Decode(&doc); err != nil {
@ -409,12 +410,13 @@ func (gp *groupParty) InviteToParty(w http.ResponseWriter, r *http.Request) {
if gd == nil {
gid = primitive.NewObjectID()
gd, err = gp.createGroup(gid, mid, doc.Inviter)
gd, err = gp.createGroup(gid, mid, doc.Inviter, doc.InitialPartyDoc)
if err != nil {
logger.Println("InviteToParty failed. gp.createGroup() return err :", err)
w.WriteHeader(http.StatusInternalServerError)
return
}
// 내가 wshandler room에 입장
gp.enterRoom(gid, mid)
gp.rh.JSONSet(mid.Hex(), "$.party", bson.M{"id": gid.Hex()})
@ -648,7 +650,7 @@ func (gp *groupParty) QueryPartyMembers(w http.ResponseWriter, r *http.Request)
}
}
func (gp *groupParty) createGroup(newid groupID, charge accountID, chargeDoc bson.M) (*partyDoc, error) {
func (gp *groupParty) createGroup(newid groupID, charge accountID, chargeDoc bson.M, initialGroupDoc bson.M) (*partyDoc, error) {
tid := makeTid(newid, charge)
gd := &partyDoc{
@ -660,15 +662,27 @@ func (gp *groupParty) createGroup(newid groupID, charge accountID, chargeDoc bso
},
},
InCharge: tid,
Gid: newid.Hex(),
rh: gp.rh,
id: newid,
}
_, err := gp.rh.JSONSet(gd.strid(), "$", gd, gocommon.RedisonSetOptionNX)
var err error
if initialGroupDoc != nil {
initialGroupDoc["_members"] = gd.Members
initialGroupDoc["_incharge"] = gd.InCharge
initialGroupDoc["_gid"] = gd.Gid
_, err = gp.rh.JSONSet(gd.strid(), "$", initialGroupDoc, gocommon.RedisonSetOptionNX)
} else {
_, err = gp.rh.JSONSet(gd.strid(), "$", gd, gocommon.RedisonSetOptionNX)
}
if err != nil {
return nil, err
}
return gd, nil
}