diff --git a/roomserver/storage/cosmosdb/membership_table.go b/roomserver/storage/cosmosdb/membership_table.go index 04a964ad5..d07eb8da3 100644 --- a/roomserver/storage/cosmosdb/membership_table.go +++ b/roomserver/storage/cosmosdb/membership_table.go @@ -297,13 +297,23 @@ func (s *membershipStatements) InsertMembership( cosmosDocId := cosmosdbapi.GetDocumentId(s.db.cosmosConfig.TenantName, dbCollectionName, docId) pk := cosmosdbapi.GetPartitionKey(s.db.cosmosConfig.TenantName, dbCollectionName) + // " ON CONFLICT DO NOTHING" + exists, _ := getMembership(s, ctx, pk, cosmosDocId) + if exists != nil { + exists.Membership.RoomNID = int64(roomNID) + exists.Membership.TargetNID = int64(targetUserNID) + exists.Membership.TargetLocal = localTarget + _, errSet := setMembership(s, ctx, *exists) + return errSet + } + data := MembershipCosmos{ EventNID: 0, Forgotten: false, MembershipNID: 1, RoomNID: int64(roomNID), SenderNID: 0, - TargetLocal: false, + TargetLocal: localTarget, TargetNID: int64(targetUserNID), } diff --git a/roomserver/storage/cosmosdb/rooms_table.go b/roomserver/storage/cosmosdb/rooms_table.go index bfb672561..e641b761a 100644 --- a/roomserver/storage/cosmosdb/rooms_table.go +++ b/roomserver/storage/cosmosdb/rooms_table.go @@ -104,7 +104,7 @@ const bulkSelectRoomIDsSQL = "" + // "SELECT room_nid FROM roomserver_rooms WHERE room_id IN ($1)" const bulkSelectRoomNIDsSQL = "" + "select * from c where c._cn = @x1 " + - "and ARRAY_CONTAINS(@x2, c.mx_roomserver_room.room_nid)" + "and ARRAY_CONTAINS(@x2, c.mx_roomserver_room.room_id)" type roomStatements struct { db *Database