locals {
  update_track_playlist_history_secrets_set = toset([
    "MYSQL_PASSWORD",
    "SENTRY_DSN",
  ])

  update_track_playlist_history_common_secrets = {
    DD_API_KEY = aws_secretsmanager_secret.common_secret["DD_API_KEY"]
  }

  update_track_playlist_history_secrets_json = jsonencode(
    [
      for k, v in merge(aws_secretsmanager_secret.update_track_playlist_history_secret, local.update_track_playlist_history_common_secrets) :
      {
        name      = k,
        valueFrom = "arn:aws:secretsmanager:${var.aws_region_id}:${local.account_id}:secret:${v["name"]}"
      }
    ]
  )
}

resource "aws_secretsmanager_secret" "update_track_playlist_history_secret" {
  for_each   = local.update_track_playlist_history_secrets_set
  name       = "${local.secrets_name_prefix}/update_track_playlist_history/${each.value}"
  kms_key_id = data.aws_kms_key.secrets_general_key.id

  tags = merge(
    local.common_tags,
    {
      project                  = "Infrastructure",
      service                  = "Secrets Manager",
      plat_env_project_service = "${local.aggregated_tag}_INFRA_SCRT"
    }
  )
}

data "aws_iam_role" "update_track_playlist_history_role" {
  name = "${local.name_prefix}-update_track_playlist_history_role"
}

data "aws_ecr_repository" "update_track_playlist_history_ecr" {
  name = "apollo/update_track_playlist_history"

  provider = aws.gdb-apollo-dev
}

module "update_track_playlist_history" {
  # Standard parameters which could be included into the template
  source             = "../../../modules/ecs/tasks/scheduled_task"
  env_prefix         = local.env_prefix
  project_group      = local.project_group
  project            = "update_track_playlist_history"
  region             = var.aws_region_id
  cluster_arn        = data.aws_ecs_cluster.main.arn
  security_groups    = [data.aws_security_group.main.id]
  task_exec_role_arn = data.aws_iam_role.standard_exec.arn
  task_role_arn      = data.aws_iam_role.update_track_playlist_history_role.arn
  scheduler_role_arn = module.ecs_scheduler_role.role.arn
  subnets            = data.aws_subnets.private_subnets.ids
  secrets            = local.update_track_playlist_history_secrets_json
  image              = "${data.aws_ecr_repository.update_track_playlist_history_ecr.repository_url}:${local.docker_image_env_tag[var.platform.prefix]}"
  schedule           = "rate(6 hours)"
  schedule_enabled   = false
  cpu                = 1024
  memory             = 4096

  env_vars = [
    {
      name  = "ENVIRONMENT",
      value = local.environment
    },
    {
      name  = "S3_BUCKET",
      value = "${local.name_prefix}-track-playlist-history"
    },
    {
      name  = "MYSQL_USER",
      value = "apollo_utph_usr"
    },
    {
      name  = "MYSQL_DATABASE",
      value = "dbSony_dbo"
    },
    {
      name  = "MYSQL_HOST",
      value = module.domains[local.env_prefix]["main-db-rw"]
    },
    {
      name  = "REDIS_HOST",
      value = data.aws_elasticache_cluster.main.cache_nodes.0.address
    },
    {
      name  = "ATHENA_DATABASE",
      value = "${local.env_prefix}_apollo_track_playlist_history"
    },
    {
      name  = "ECS_CLUSTER",
      value = data.aws_ecs_cluster.main.cluster_name
    },
    {
      name  = "PROJECT",
      value = local.project_group
    },
    {
      name  = "ECS_SERVICE",
      value = "update_track_playlist_history"
    },
  ]

  common_tags = merge(
    local.common_tags,
    {
      project                  = "Portal",
      service                  = "ECS",
      plat_env_project_service = "${local.aggregated_tag}_PRL_ECS"
    }
  )
}

