package tv.pluto.grpc.campaign;

import io.grpc.Channel;
import java.util.Collections;
import java.util.List;
import tv.pluto.grpc.GenericGrpcClient;
import tv.pluto.ip.dal.campaign.CampaignManagerGrpc;
import tv.pluto.ip.dal.campaign.Campaigns;

public class CampaignsClient extends GenericGrpcClient {
  private Campaigns.GetAllPagedRequest.Builder getAllPagedBuilder =
      Campaigns.GetAllPagedRequest.newBuilder();
  private CampaignManagerGrpc.CampaignManagerBlockingStub blockingStub;

  public CampaignsClient(Channel channel) {
    blockingStub = CampaignManagerGrpc.newBlockingStub(channel);
    blockingStub = blockingStub.withInterceptors(CLIENT_INTERCEPTOR);
  }

  public List<Campaigns.GetAllPagedSort> grpcSort(String field, int sort) {
    return Collections.singletonList(
        Campaigns.GetAllPagedSort.newBuilder().setField(field).setValue(sort).build());
  }

  public Campaigns.Filter campaignFilter(String field, String value, String type, String operator) {
    Campaigns.Filter.Builder builder = Campaigns.Filter.newBuilder();
    if (field != null) builder.setField(field);
    if (value != null) builder.setValue(value);
    if (type != null) builder.setType(type);
    if (operator != null) builder.setOperator(operator);

    return builder.build();
  }
}
