package io.delphi.qa.auto.awsmfrw.models.aws.cw;

import com.google.gson.annotations.SerializedName;
import lombok.*;

@Getter
@ToString
@EqualsAndHashCode
@AllArgsConstructor
@NoArgsConstructor
public class OptionalConfig {

  @SerializedName("AWS_XRAY_SDK_ENABLED")
  private Boolean awsXraySdkEnabled;

  @SerializedName("CONFIG_BUCKET")
  private String configBucket;

  @SerializedName("CONCURRENT_TASK_LIMIT")
  private String concurrentTaskLimit = "1000";
  @SerializedName("CONTENT_STATUS_TABLE_NAME")
  private String contentStatusTableName;
  @SerializedName("DSP_COMPLETION_CONFIG_KEY")
  private String dspCompletionConfigKey;
  @SerializedName("DSP_CONFIG_KEY")
  private String dspConfigKey;
  @SerializedName("DSP_SETTINGS_CONFIG_KEY")
  private String dspSettingsConfigKey;
  @SerializedName("ECS_RUN_CONFIG_KEY")
  private String ecsRunConfigKey;
  @SerializedName("ENVIRONMENT")
  private String environment;
  @SerializedName("MIGRATION_STAGE")
  private Long migrationStage;
  @SerializedName("RDS_SECRETS_KEY")
  private String rdsSecretsKey;
  @SerializedName("SF_ARN")
  private String sfArn;
  @SerializedName("SNS_TOPIC_ARN_REPROCESSING")
  private String snsTopicArnReprocessing;
  @SerializedName("UOW_STATUS_TABLE_NAME")
  private String uowStatusTableName;
  @SerializedName("VALIDATION_THRESHOLD_FILE_SIZE")
  private Integer validationThresholdFileSize;
  @SerializedName("RETRIGGERING_TRESHOLD")
  private Integer retriggeringTreshold;

  public OptionalConfig withConcurrentTaskLimit(String xConcurrentTaskLimit) {
    this.concurrentTaskLimit = xConcurrentTaskLimit;
    return this;
  }

  public OptionalConfig withConfigBucket(String xConfigBucket) {
    this.configBucket = xConfigBucket;
    return this;
  }

  public OptionalConfig withDspCompletionConfigKey(String xDspCompletionConfigKey) {
    this.dspCompletionConfigKey = xDspCompletionConfigKey;
    return this;
  }

  public OptionalConfig withDspConfigKey(String xDspConfigKey) {
    this.dspConfigKey = xDspConfigKey;
    return this;
  }

  public OptionalConfig withDspSettingsConfigKey(String xDspSettingsConfigKey) {
    this.dspSettingsConfigKey = xDspSettingsConfigKey;
    return this;
  }

  public OptionalConfig withEcsRunConfigKey(String xEcsRunConfigKey) {
    this.ecsRunConfigKey = xEcsRunConfigKey;
    return this;
  }

  public OptionalConfig withRdsSecretsKey(String xRdsSecretsKey) {
    this.rdsSecretsKey = xRdsSecretsKey;
    return this;
  }

  public OptionalConfig withRetriggeringTreshold(Integer xRetriggeringTreshold) {
    this.retriggeringTreshold = xRetriggeringTreshold;
    return this;
  }

  public OptionalConfig withValidationThresholdFileSize(Integer xValidationThresholdFileSize) {
    this.validationThresholdFileSize = xValidationThresholdFileSize;
    return this;
  }
}
