package tv.pluto.grpc.transcodejobs;

import com.plutotv.test.lib.LogUtils;
import io.grpc.Channel;
import tv.pluto.grpc.GenericGrpcClient;
import tv.pluto.ip.dal.transcodejobs.TranscodeJobs.UpdateTranscodeStatusAndReturnUpdatedRequest;
import tv.pluto.ip.dal.transcodejobs.TranscodeJobs.UpdateTranscodeStatusAndReturnUpdatedResponse;
import tv.pluto.ip.dal.transcodejobs.TranscodeJobsManagerGrpc;

/** Class represents gRPC client for <b>transcode_jobs.proto</b> file */
public class TranscodeJobsClient extends GenericGrpcClient {
  private TranscodeJobsManagerGrpc.TranscodeJobsManagerBlockingStub blockingStub;

  public TranscodeJobsClient(Channel channel) {
    blockingStub = TranscodeJobsManagerGrpc.newBlockingStub(channel);
    blockingStub = blockingStub.withInterceptors(CLIENT_INTERCEPTOR);
  }

  public UpdateTranscodeStatusAndReturnUpdatedResponse updateTranscodeStatusAndReturnUpdated(
      TranscodeUpdateRequest updateRequest) {
    LogUtils.logInfoMessage("Updating transcodejobs with request object " + updateRequest);

    UpdateTranscodeStatusAndReturnUpdatedRequest request =
        UpdateTranscodeStatusAndReturnUpdatedRequest.newBuilder()
            .setQueryExternalID(updateRequest.getQueryExternalID())
            .setQueryTranscoderName(updateRequest.getQueryTranscoderName())
            .setQueryGteLibVersion(updateRequest.getQueryGteLibVersion())
            .setSetStatus(updateRequest.getSetStatus())
            .setSetError(updateRequest.getSetError())
            .setSetProgress(updateRequest.getSetProgress())
            .build();

    return blockingStub.updateTranscodeStatusAndReturnUpdated(request);
  }
}
