Beispiel #1
0
        public async Task <IActionResult> DeleteAsync(string userId, string boardId, [FromServices] ITableMessageQueueStorageRepository deletedBoardQueue)
        {
            // Delete the data
            var deletedEntity = await _boardRepository.RemoveAsync(userId, boardId);

            // if the user is the board owner, queue the "sync operation".
            // This will remove all cards and associations to this board.
            if (deletedEntity.OwnerId == userId) // TODO: validate/rethink/refactor this logic if needed
            {
                await deletedBoardQueue.AddMessageAsync(new TableMessage
                {
                    PartitionKey = deletedEntity.PartitionKey,
                    RowKey       = deletedEntity.RowKey
                });
            }

            // Create the return contract
            var deletedBoard = new Board
            {
                Id      = deletedEntity.RowKey,
                Name    = deletedEntity.Name,
                OwnerId = deletedEntity.OwnerId
            };

            // Return 200 OK
            return(Ok(deletedBoard));
        }
 public UserOperationQueuesService(
     ITableMessageQueueStorageRepository userCreatedQueue,
     ITableMessageQueueStorageRepository userUpdatedQueue,
     ITableMessageQueueStorageRepository userDeletedQueue
     )
 {
     UserCreatedQueue = userCreatedQueue ?? throw new ArgumentNullException(nameof(userCreatedQueue));
     UserUpdatedQueue = userUpdatedQueue ?? throw new ArgumentNullException(nameof(userUpdatedQueue));
     UserDeletedQueue = userDeletedQueue ?? throw new ArgumentNullException(nameof(userDeletedQueue));
 }