Skip to content

arielsrv/ng-webapp

Repository files navigation

.NET badge

ng-webapp

Illustrates how to use Rx in an dotnet core api.

Controller

[HttpGet("multi-get")]
public async Task<IActionResult> GetUsers([FromQuery] string ids)
{
    IEnumerable<long> request = ids.ToEnumerable();
    return await TaskExecutor.ExecuteAsync(this.userQuery.GetById(request));
}

Service

public IObservable<IEnumerable<MultiGetDto<UserDto>>> GetById(IEnumerable<long> elements)
{
    return elements
        .Select(id => this.GetById(id)
            .Map(userDto => userDto != null
                ? MultiGetDto<UserDto>.CreateOk(userDto)
                : MultiGetDto<UserDto>.CreateNotFound(new UserDto
                {
                    Id = id
                })))
        .Merge(10, Scheduler.Default)
        .ToList()
        .Map(multiGetDtos => multiGetDtos
            .OrderBy(multiGetDto => multiGetDto.Body!.Id)
            .AsEnumerable());
}