locals {
  delphi_projects = {
    "delphi-api" = {
      name     = "delphi-api"
      slug     = "delphi-api"
      platform = "python-flask"
    },
    "delphi-api-java" = {
      name     = "delphi-api-java"
      slug     = "delphi-api-java"
      platform = "java"
    },
    "dapd_exporter" = {
      name     = "dapd_exporter"
      slug     = "dapd_exporter"
      platform = "python"
    },
    "dapd_transformation_service" = {
      name     = "dapd_transformation_service"
      slug     = "dapd_transformation_service"
      platform = "python"
    },
    "dapd_public_api_scraper" = {
      name     = "dapd_public_api_scraper"
      slug     = "dapd_public_api_scraper"
      platform = "python"
    },
    "dapd_exporter_api" = {
      name     = "dapd_exporter_api"
      slug     = "dapd_exporter_api"
      platform = "python-flask"
    },
    "dapd_exporter_lambda" = {
      name     = "dapd_exporter_lambda"
      slug     = "dapd_exporter_lambda"
      platform = "python-pythonawslambda"
    },
    "dapd_scheduler_lambda" = {
      name     = "dapd_scheduler_lambda"
      slug     = "dapd_scheduler_lambda"
      platform = "python-pythonawslambda"
    },
    "dapd_importer_lambda" = {
      name     = "dapd_importer_lambda",
      slug     = "dapd_importer_lambda",
      platform = "python-pythonawslambda"
    },
    "dapd_upserter_lambda" = {
      name     = "dapd_upserter_lambda",
      slug     = "dapd_upserter_lambda",
      platform = "python-pythonawslambda"
    },
    "dae_s3_consumer_events_distribution_lambda" = {
      name     = "dae_s3_consumer_events_distribution_lambda"
      slug     = "dae_s3_consumer_events_distribution_lambda"
      platform = "python-pythonawslambda"
    },
    "dh_data_health_agent_lambda" = {
      name     = "dh_data_health_agent_lambda"
      slug     = "dh_data_health_agent_lambda"
      platform = "python-pythonawslambda"
    },
    "slz_dbx_job_runner" = {
      name     = "slz_dbx_job_runner"
      slug     = "slz_dbx_job_runner"
      platform = "python-pythonawslambda"
    },
    "slz_availability_check" = {
      name     = "slz_availability_check"
      slug     = "slz_availability_check"
      platform = "python-pythonawslambda"
    },
    "slz_clean_up" = {
      name     = "slz_clean_up"
      slug     = "slz_clean_up"
      platform = "python-pythonawslambda"
    },
    "slz_check_complete" = {
      name     = "slz_check_complete"
      slug     = "slz_check_complete"
      platform = "python-pythonawslambda"
    },
    "slz_job_manager" = {
      name     = "slz_job_manager"
      slug     = "slz_job_manager"
      platform = "python-pythonawslambda"
    },
    "slz_job_executor" = {
      name     = "slz_job_executor"
      slug     = "slz_job_executor"
      platform = "python-pythonawslambda"
    },
    "slz_house_keeper" = {
      name     = "slz_house_keeper"
      slug     = "slz_house_keeper"
      platform = "python-pythonawslambda"
    },
    "slz_meta_manager" = {
      name     = "slz_meta_manager"
      slug     = "slz_meta_manager"
      platform = "python-pythonawslambda"
    },
    "slz_meta_retrigger" = {
      name     = "slz_meta_retrigger"
      slug     = "slz_meta_retrigger"
      platform = "python-pythonawslambda"
    },
    "slz_meta_status_reset" = {
      name     = "slz_meta_status_reset"
      slug     = "slz_meta_status_reset"
      platform = "python-pythonawslambda"
    },
    "slz_prepare_configuration" = {
      name     = "slz_prepare_configuration"
      slug     = "slz_prepare_configuration"
      platform = "python-pythonawslambda"
    },
    "slz_uow_reset" = {
      name     = "slz_uow_reset"
      slug     = "slz_uow_reset"
      platform = "python-pythonawslambda"
    },
    "slz_downloader" = {
      name     = "slz_downloader"
      slug     = "slz_downloader"
      platform = "python"
    },
    "slz_hasher" = {
      name     = "slz_hasher"
      slug     = "slz_hasher"
      platform = "python"
    },
    "slz_uow_monitoring" = {
      name     = "slz_uow_monitoring"
      slug     = "slz_uow_monitoring"
      platform = "python-pythonawslambda"
    },
    "slz_backfill_lambda" = {
      name     = "slz_backfill_lambda"
      slug     = "slz_backfill_lambda"
      platform = "python-pythonawslambda"
    },
    "dae_apollo_api_scraper" = {
      name     = "dae_apollo_api_scraper"
      slug     = "dae_apollo_api_scraper"
      platform = "python-pythonawslambda"
    },
    "tiktok_chartmetrics_loader" = {
      name     = "tiktok_chartmetrics_loader"
      slug     = "tiktok_chartmetrics_loader"
      platform = "python-pythonawslambda"
    },
    "slz_gdpr_email_downloader" = {
      name     = "slz_gdpr_email_downloader"
      slug     = "slz_gdpr_email_downloader"
      platform = "python-pythonawslambda"
    },
    "slz_gdpr_email_sender" = {
      name     = "slz_gdpr_email_sender"
      slug     = "slz_gdpr_email_sender"
      platform = "python-pythonawslambda"
    },
    "bulk_decompress_lambda" = {
      name     = "bulk_decompress_lambda"
      slug     = "bulk_decompress_lambda"
      platform = "python-pythonawslambda"
    },
    "bulk_decompress_task" = {
      name     = "bulk_decompress_task"
      slug     = "bulk_decompress_task"
      platform = "python"
    },
    "data_completeness_updater" = {
      name     = "data_completeness_updater"
      slug     = "data_completeness_updater"
      platform = "python-pythonawslambda"
    },
    "apps_etl_databricks" = {
      name     = "apps_etl_databricks"
      slug     = "apps_etl_databricks"
      platform = "python-pythonawslambda"
    },
    "apps_etl_manager" = {
      name     = "apps_etl_manager"
      slug     = "apps_etl_manager"
      platform = "python-pythonawslambda"
    },
    "apps_etl_runner" = {
      name     = "apps_etl_runner"
      slug     = "apps_etl_runner"
      platform = "python-pythonawslambda"
    },
    "apps_etl_set_uow_status" = {
      name     = "apps_etl_set_uow_status"
      slug     = "apps_etl_set_uow_status"
      platform = "python-pythonawslambda"
    },
    "exp_archive_lambda" = {
      name     = "exp_archive_lambda"
      slug     = "exp_archive_lambda"
      platform = "python-pythonawslambda"
    },
    "exp_dbx_runner_lambda" = {
      name     = "exp_dbx_runner_lambda"
      slug     = "exp_dbx_runner_lambda"
      platform = "python-pythonawslambda"
    },
    "exp_dbx_status_checker_lambda" = {
      name     = "exp_dbx_status_checker_lambda"
      slug     = "exp_dbx_status_checker_lambda"
      platform = "python-pythonawslambda"
    },
    "exp_manager_lambda" = {
      name     = "exp_manager_lambda"
      slug     = "exp_manager_lambda"
      platform = "python-pythonawslambda"
    },
    "exp_results_process_lambda" = {
      name     = "exp_results_process_lambda"
      slug     = "exp_results_process_lambda"
      platform = "python-pythonawslambda"
    },
    "exp_sf_runner_lambda" = {
      name     = "exp_sf_runner_lambda"
      slug     = "exp_sf_runner_lambda"
      platform = "python-pythonawslambda"
    },
    "dae_apollo_api_scraper" = {
      name     = "dae_apollo_api_scraper"
      slug     = "dae_apollo_api_scraper"
      platform = "python-pythonawslambda"
    },
    "slz_spotify_charts_scraper" = {
      name     = "slz_spotify_charts_scraper"
      slug     = "slz_spotify_charts_scraper"
      platform = "python-pythonawslambda"
    },
    "delphi_slz_admin" = {
      name     = "delphi_slz_admin"
      slug     = "delphi_slz_admin"
      platform = "python-flask"
    },
    "slz_spotify_charts_data_extender" = {
      name     = "slz_spotify_charts_data_extender"
      slug     = "slz_spotify_charts_data_extender"
      platform = "python-pythonawslambda"
    },
    "slz_spotify_charts_clean_up" = {
      name     = "slz_spotify_charts_clean_up"
      slug     = "slz_spotify_charts_clean_up"
      platform = "python-pythonawslambda"
    },
    "slz_apple_music_charts_data_processor" = {
      name     = "slz_apple_music_charts_data_processor"
      slug     = "slz_apple_music_charts_data_processor"
      platform = "python-pythonawslambda"
    },
    "slz_apple_music_charts_pipeline_configurator" = {
      name     = "slz_apple_music_charts_pipeline_configurator"
      slug     = "slz_apple_music_charts_pipeline_configurator"
      platform = "python-pythonawslambda"
    },
    "slz_apple_music_charts_scrapper" = {
      name     = "slz_apple_music_charts_scrapper"
      slug     = "slz_apple_music_charts_scrapper"
      platform = "python"
    },
    "slz_ddex_housekeeping" = {
      name     = "slz_ddex_housekeeping"
      slug     = "slz_ddex_housekeeping"
      platform = "python"
    },
    "slz_ddex_downloader" = {
      name     = "slz_ddex_downloader"
      slug     = "slz_ddex_downloader"
      platform = "python"
    },
    "slz_appreciationengine_scrapper" = {
      name     = "slz_appreciationengine_scrapper"
      slug     = "slz_appreciationengine_scrapper"
      platform = "python"
    },
    "slz_appreciationengine_availability_check" = {
      name     = "slz_appreciationengine_availability_check"
      slug     = "slz_appreciationengine_availability_check"
      platform = "python-pythonawslambda"
    },
    "slz_appreciationengine_clean_up" = {
      name     = "slz_appreciationengine_clean_up"
      slug     = "slz_appreciationengine_clean_up"
      platform = "python-pythonawslambda"
    },
    "slz_appreciationengine_prepare_configuration" = {
      name     = "slz_appreciationengine_prepare_configuration"
      slug     = "slz_appreciationengine_prepare_configuration"
      platform = "python-pythonawslambda"
    },
    "dapd_api_scraper" = {
      name     = "dapd_api_scraper"
      slug     = "dapd_api_scraper"
      platform = "python"
    },
    "notification_service" = {
      name     = "notification_service"
      slug     = "notification_service"
      platform = "python-pythonawslambda"
    },
    "dapd_apollo_sync_service" = {
      name     = "dapd_apollo_sync_service"
      slug     = "dapd_apollo_sync_service"
      platform = "python-pythonawslambda"
    },
    "dapd_apollo_sync_finalizer" = {
      name     = "dapd_apollo_sync_finalizer"
      slug     = "dapd_apollo_sync_finalizer"
      platform = "python-pythonawslambda"
    },
    "slz_gdpr_deletion_diff_sender" = {
      name     = "slz_gdpr_deletion_diff_sender"
      slug     = "slz_gdpr_deletion_diff_sender"
      platform = "python-pythonawslambda"
    },
    "slz_url_to_s3" = {
      name     = "slz_url_to_s3"
      slug     = "slz_url_to_s3"
      platform = "python-pythonawslambda"
    },
    "slz_validator" = {
      name     = "slz_validator"
      slug     = "slz_validator"
      platform = "python-pythonawslambda"
    },
    "slz_decompressor" = {
      name     = "slz_decompressor"
      slug     = "slz_decompressor"
      platform = "python-pythonawslambda"
    },
    "slz_spotify_partitions_wrapper" = {
      name     = "slz_spotify_partitions_wrapper"
      slug     = "slz_spotify_partitions_wrapper"
      platform = "python-pythonawslambda"
    },
    "slz_scheduler" = {
      name     = "slz_scheduler"
      slug     = "slz_scheduler"
      platform = "python"
    },
  }
}

resource "sentry_project" "delphi_project" {
  for_each = local.delphi_projects

  organization = "gdb"
  team         = sentry_team.delphi.id
  name         = each.value["name"]
  slug         = each.value["slug"]
  platform     = each.value["platform"]
}

resource "sentry_rule" "delphi_project_rule" {
  for_each = local.delphi_projects

  organization = "gdb"
  project      = each.value["slug"]
  action_match = "any"
  frequency    = 30
  environment  = null
  name         = "Send a notification for new issues"

  actions = [{
    id = "sentry.rules.actions.notify_event.NotifyEventAction"
  }]

  conditions = [{
    id = "sentry.rules.conditions.first_seen_event.FirstSeenEventCondition"
  }]
}
