Beispiel #1
0
        public async Task JoinGroup(JoinGroupCommand joinGroupCommand)
        {
            //var documentResult = await _groupsBucket.MutateIn<GroupDocument>(joinGroupCommand.GroupId.ToString())
            //    .ArrayAppend("members", new GroupMemberDocument { MemberId = joinGroupCommand.MemberId })
            //    .ExecuteAsync();

            //var documentResult = await _groupsBucket.MutateIn<GroupDocument>(joinGroupCommand.GroupId.ToString())
            //    .ArrayAppend("members", new GroupMemberDocument { MemberId = joinGroupCommand.MemberId })
            //    .ExecuteAsync();

            //if (!documentResult.Success)
            //    throw documentResult.Exception;

            var queryRequest = new QueryRequest()
                               .Statement($"UPDATE `{_groupsBucket.Name}` USE KEYS $groupId SET members = ARRAY_DISTINCT(ARRAY_APPEND(IFMISSINGORNULL(members,[]), $memberId));")
                               .AddNamedParameter("$groupId", joinGroupCommand.GroupId)
                               .AddNamedParameter("$memberId", new GroupMemberDocument {
                MemberId = joinGroupCommand.MemberId
            });

            var queryResult = await _groupsBucket.QueryAsync <dynamic>(queryRequest);

            if (!queryResult.Success)
            {
                throw queryResult.Exception;
            }
        }
        public async Task <IActionResult> JoinGroup(int uId, JoinGroupCommand joinGroupCommand)
        {
            joinGroupCommand.Finalize(uId);

            await _mediator.Send(joinGroupCommand);

            return(Ok());
        }