package io.delphi.qa.auto.awsmfrw.common_baby;

import io.delphi.qa.auto.awsmfrw.models.EnDelphiHelperClassItems;

public enum EnDelphiFsResourceList implements ICanProvideResources, IsaConstants {
  ARTIST_IDS("src/test/resources/testdata/api/postgres/", "artist_ids.csv", "artist_id"),
  ARTIST_IDS_IS_VALID(
          "src/test/resources/testdata/api/streams/",
          "artist_id_is_valid.csv",
          "artist_ids_is_valid"),
  CHART_IDS("src/test/resources/testdata/api/postgres/", "chart_ids.csv", "chart_id"),
  CHANNEL_IDS("src/test/resources/testdata/api/postgres/", "channel_ids.csv", "channel_id"),
  COMPANY_KEYS("src/test/resources/testdata/api/postgres/", "company_keys.csv", "company_key"),
  CHART_GROUPS("src/test/resources/testdata/api/postgres/", "chart_groups.csv", "chart_group"),
  COUNTRY_CODES("src/test/resources/testdata/api/postgres/", "country_codes.csv", "country_code"),
  TOP_COUNTRY_CODES(
      "src/test/resources/testdata/api/postgres/", "top_country_codes.csv", "country_code"),
  CONTENT_TYPES("src/test/resources/testdata/api/postgres/", "content_types.csv", "content_type"),
  CAMPAIGN_IDS("src/test/resources/testdata/api/postgres/", "campaign_ids.csv", "campaign_id"),
  DECIBEL_LABEL_IDS(
      "src/test/resources/testdata/api/postgres/", "decibel_label_ids.csv", "decibel_label_id"),
  DSPS("src/test/resources/testdata/api/postgres/", "dsps.csv", "dsp"),
  SHORT_DSPS("src/test/resources/testdata/api/postgres/", "short_dsps.csv", "dsp"),
  STREAMS_DSPS("src/test/resources/testdata/api/postgres/", "streams_dsps.csv", "dsp"),
  SHAZAM_CITY_IDS(
      "src/test/resources/testdata/api/postgres/", "shazam_city_ids.csv", "shazam_city_id"),
  SHAZAM_CITY_NAMES(
      "src/test/resources/testdata/api/postgres/", "shazam_city_names.csv", "shazam_city_name"),
  VIDEO_DSPS("src/test/resources/testdata/api/postgres/", "video_dsps.csv", "dsp"),
  ADS_DSPS("src/test/resources/testdata/api/postgres/", "ads_dsps.csv", "dsp"),
  ISRCS("src/test/resources/testdata/api/postgres/", "isrcs.csv", "isrc"),
  DAPD_ISRCS_AMAZON("src/test/resources/testdata/l2/dapd_compare/", "amazon_isrcs.csv", "isrc"),
  DAPD_ISRCS("src/test/resources/testdata/l2/dapd_compare/", "isrcs.csv", "isrc"),
  DAPD_PLAYLISTS("src/test/resources/testdata/l2/dapd_compare/", "playlists.csv", "playlists"),
  VIDEO_ISRCS("src/test/resources/testdata/api/postgres/", "video_isrcs.csv", "isrc"),
  PLATFORMS("src/test/resources/testdata/api/postgres/", "platforms.csv", "platform"),
  PARENT_REP_OWNER_KEYS(
      "src/test/resources/testdata/api/postgres/", "fill_me.csv", "parent_rep_owner_keys"),
  PHASE_IDS("src/test/resources/testdata/api/postgres/", "phase_ids.csv", "phase_id"),
  PROVIDER_IDS("src/test/resources/testdata/api/postgres/", "provider_ids.csv", "provider_id"),
  SUB_CATEGORY_IDS(
      "src/test/resources/testdata/api/postgres/", "sub_category_ids.csv", "sub_category_id"),
  PLAYLIST_IDS("src/test/resources/testdata/api/postgres/", "playlist_ids.csv", "playlist_id"),
  PROFIT_CENTER_KEYS(
          "src/test/resources/testdata/api/postgres/", "create_me.csv", "profit_center_key"),
  PRODUCT_IDS("src/test/resources/testdata/api/postgres/", "product_ids.csv", "product_id"),
  REGION_IDS("src/test/resources/testdata/api/postgres/", "region_ids.csv", "region_id"),
  REFERRER_DOMAIN(
          "src/test/resources/testdata/api/postgres/", "referrer_domains.csv", "referrer_domain"),
  TRACK_IDS("src/test/resources/testdata/api/postgres/", "track_ids.csv", "track_id"),
  VIDEO_IDS("src/test/resources/testdata/api/postgres/", "video_ids.csv", "video_id"),
  GRAS_IDS("src/test/resources/testdata/api/postgres/", "gras_ids.csv", "gras_id"),
  USER_IDS("src/test/resources/testdata/api/postgres/", "user_ids.csv", "user_id"),
  PRODUCT_FAMILY_IDS(
          "src/test/resources/testdata/api/postgres/", "product_family_ids.csv", "product_family_id"),
  PRODUCT_FAMILY_NOS(
          "src/test/resources/testdata/api/postgres/", "product_family_nos.csv", "product_family_no"),
  PRODUCT_VERSION_NOS(
          "src/test/resources/testdata/api/postgres/", "product_version_nos.csv", "product_version_no"),
  PROJECT_IDS("src/test/resources/testdata/api/postgres/", "project_ids.csv", "project_id"),
  PROJECT_NOS("src/test/resources/testdata/api/postgres/", "project_nos.csv", "project_no"),
  REP_OWNER_KEYS(
          "src/test/resources/testdata/api/postgres/", "rep_owner_keys.csv", "rep_owner_key"),
  GENERIC_TEST_CASE_ETL_LINKFIRE(
          "src/test/resources/testdata/etl/snowflake/export_to/postgres/",
          "tcs_linkfire.json",
          "tcs_linkfire"),
  GENERIC_TEST_CASE_L2_RTI_ONBOARDING(
          "src/test/resources/testdata/l2/rti/onboarding/artists/",
          "tcs_artist_id_chartmetric_id.json",
          "tcs_rti_artist_onboarding"),
  GENERIC_TEST_CASE_L2_RTI_ONBOARDING_CSV(
      "src/test/resources/testdata/l2/rti/onboarding/artists/undertest/",
      "tcs_artist_id_chartmetric_id.csv",
      "tcs_rti_artist_onboarding"),
  GENERIC_TEST_CASE_API_GET_ADS_PERFORMANCE(
      "src/test/resources/testdata/api/end_points/",
      "tcs_get_ads_performance.json",
      "tc_get_ads_performance"),
  GENERIC_TEST_CASE_API_GET_PRODUCTS(
      "src/test/resources/testdata/api/end_points/", "tcs_get_products.json", "tc_get_products"),
  GENERIC_TEST_CASE_API_DEBUG(
      "src/test/resources/testdata/api/end_points/", "tcs_debug.json", "tcs_debug"),
  GENERIC_TEST_CASE_API_GET_VIDEO_POSITIONS_CHARTS_SUMMARY(
      "src/test/resources/testdata/api/end_points/",
      "tcs_get_video_positions_charts_summary.json",
      "tc_get_video_positions_charts_summary"),
  AWS_S3_SLZ_CONTEXTS("src/test/resources/testdata/slz/aws/s3/", "", ""),
  AWS_STEP_FUNCTIONS_SLZ_CONFIGS("src/test/resources/testdata/slz/aws/sf/", "", ""),
  MEDIA_TYPE("src/test/resources/testdata/api/postgres/", "media_type.csv", "media_type"),
  START_DATE(
      "src/test/resources/testdata/api/postgres/",
      "start_date",
      IsaCommonMethods.printDateTimeText(
          DT_NOW.minusDays(IsaConstants.envConfig.delphiApiStartDateShift()), "yyyy-MM-dd")),
  END_DATE(
      "src/test/resources/testdata/api/postgres/",
      "end_date",
      IsaCommonMethods.printDateTimeText(
          DT_NOW.minusDays(IsaConstants.envConfig.delphiApiEndDateShift()), "yyyy-MM-dd")),
  D365(
      "src/test/resources/testdata/api/postgres/",
      "D365",
      IsaCommonMethods.printDateTimeText(DT_NOW.minusDays(366), "yyyy-MM-dd")),
  D3650(
          "src/test/resources/testdata/api/postgres/",
          "D3650",
          IsaCommonMethods.printDateTimeText(DT_NOW.minusDays(3651), "yyyy-MM-dd")),
  D335(
      "src/test/resources/testdata/api/postgres/",
      "D335",
      IsaCommonMethods.printDateTimeText(DT_NOW.minusDays(28 * 12), "yyyy-MM-dd")),
  D307(
      "src/test/resources/testdata/api/postgres/",
      "D307",
      IsaCommonMethods.printDateTimeText(DT_NOW.minusDays(28 * 11), "yyyy-MM-dd")),
  D279(
      "src/test/resources/testdata/api/postgres/",
      "D279",
      IsaCommonMethods.printDateTimeText(DT_NOW.minusDays(28 * 10), "yyyy-MM-dd")),
  D251(
      "src/test/resources/testdata/api/postgres/",
      "D251",
      IsaCommonMethods.printDateTimeText(DT_NOW.minusDays(28 * 9), "yyyy-MM-dd")),
  D223(
      "src/test/resources/testdata/api/postgres/",
      "D223",
      IsaCommonMethods.printDateTimeText(DT_NOW.minusDays(28 * 8), "yyyy-MM-dd")),
  D195(
      "src/test/resources/testdata/api/postgres/",
      "D195",
      IsaCommonMethods.printDateTimeText(DT_NOW.minusDays(28 * 7), "yyyy-MM-dd")),
  D167(
      "src/test/resources/testdata/api/postgres/",
      "D167",
      IsaCommonMethods.printDateTimeText(DT_NOW.minusDays(28 * 6), "yyyy-MM-dd")),
  D139(
      "src/test/resources/testdata/api/postgres/",
      "D139",
      IsaCommonMethods.printDateTimeText(DT_NOW.minusDays(28 * 5), "yyyy-MM-dd")),
  D111(
      "src/test/resources/testdata/api/postgres/",
      "D111",
      IsaCommonMethods.printDateTimeText(DT_NOW.minusDays(28 * 4), "yyyy-MM-dd")),
  D83(
      "src/test/resources/testdata/api/postgres/",
      "D83",
      IsaCommonMethods.printDateTimeText(DT_NOW.minusDays(28 * 3), "yyyy-MM-dd")),
  D55(
      "src/test/resources/testdata/api/postgres/",
      "D55",
      IsaCommonMethods.printDateTimeText(DT_NOW.minusDays(28 * 2), "yyyy-MM-dd")),
  D27(
      "src/test/resources/testdata/api/postgres/",
      "D27",
      IsaCommonMethods.printDateTimeText(DT_NOW.minusDays(28), "yyyy-MM-dd")),
  D20(
          "src/test/resources/testdata/api/postgres/",
          "D21",
          IsaCommonMethods.printDateTimeText(DT_NOW.minusDays(21), "yyyy-MM-dd")),

  D14(
          "src/test/resources/testdata/api/postgres/",
          "D14",
          IsaCommonMethods.printDateTimeText(DT_NOW.minusDays(15), "yyyy-MM-dd")),
  D13(
      "src/test/resources/testdata/api/postgres/",
      "D13",
      IsaCommonMethods.printDateTimeText(DT_NOW.minusDays(7 * 2), "yyyy-MM-dd")),
  D7(
      "src/test/resources/testdata/api/postgres/",
      "D7",
      IsaCommonMethods.printDateTimeText(DT_NOW.minusDays(8), "yyyy-MM-dd")),
  D6(
      "src/test/resources/testdata/api/postgres/",
      "D6",
      IsaCommonMethods.printDateTimeText(DT_NOW.minusDays(6), "yyyy-MM-dd")),
  D2(
      "src/test/resources/testdata/api/postgres/",
      "D2",
      IsaCommonMethods.printDateTimeText(DT_NOW.minusDays(3), "yyyy-MM-dd")),
  D2_POSTGRESQL_PATTERN(
          "src/test/resources/testdata/api/postgres/",
          "D2",
          IsaCommonMethods.printDateTimeText(DT_NOW.minusDays(3), "yyyyMMdd")),
  D1(
      "src/test/resources/testdata/api/postgres/",
      "D1",
      IsaCommonMethods.printDateTimeText(DT_NOW.minusDays(1), "yyyy-MM-dd")),
  D0(
      "src/test/resources/testdata/api/postgres/",
      "D0",
      IsaCommonMethods.printDateTimeText(DT_NOW.minusDays(0), "yyyy-MM-dd")),
  ;
  private final String resourceId;
  private final String resourceName;
  private final String resourceLocator;

  EnDelphiFsResourceList(String xResourceLocator, String xResourceName, String xResourceId) {
    this.resourceLocator = xResourceLocator;
    this.resourceId = xResourceId;
    this.resourceName = xResourceName;
  }

  @Override
  public String resourceName() {
    return resourceName;
  }

  @Override
  public String resourceLocator() {
    return resourceLocator;
  }

  @Override
  public String resourceValue() {
    return resourceId;
  }

  @Override
  public EnDelphiHelperClassItems resourceClient() {
    return EnDelphiHelperClassItems.DELPHI_FS_TEST_DATA;
  }
}
