/// <inheritdoc /> public override Task <GetOneProjectionResponse> GetOne(GetOneProjectionRequest request, ServerCallContext context) { var response = new GetOneProjectionResponse(); var getIds = GetScopeAndProjectionIds(request.ScopeId, request.ProjectionId, out var scope, out var projection); if (!getIds.Success) { response.Failure = _exceptionToFailureConverter.ToFailure(getIds.Exception); return(Task.FromResult(response)); } Log.GetOne(_logger, projection, scope); var info = _projections.All.FirstOrDefault(_ => _.Definition.Scope == scope && _.Definition.Projection == projection); if (info == default) { Log.ProjectionNotRegistered(_logger, projection, scope); response.Failure = _exceptionToFailureConverter.ToFailure(new ProjectionNotRegistered(scope, projection)); return(Task.FromResult(response)); } response.Projection = CreateStatusFromInfo(info, request.TenantId?.ToGuid()); return(Task.FromResult(response)); }
/// <inheritdoc /> public async Task <Try <ProjectionStatus> > Get(MicroserviceAddress runtime, ScopeId scope, ProjectionId projection, TenantId tenant = null) { var client = _clients.CreateClientFor <ProjectionsClient>(runtime); var request = new GetOneProjectionRequest { ScopeId = scope.ToProtobuf(), ProjectionId = projection.ToProtobuf(), TenantId = tenant?.ToProtobuf() }; var response = await client.GetOneAsync(request); if (response.Failure != null) { return(new GetOneProjectionFailed(scope, projection, response.Failure.Reason)); } return(CreateProjectionStatus(response.Projection)); }