コード例 #1
0
    /// <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));
    }
コード例 #2
0
    /// <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));
    }