locals {
  decibel_snowflake_secrets_set = toset([
    "DECIBEL_ACCESS"
  ])
}

resource "aws_secretsmanager_secret" "decibel_secrets" {
  for_each   = local.decibel_snowflake_secrets_set
  name       = "${local.secrets_name_prefix}/decibel/snowflake/${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}_DECIBEL_SCRT"

    }
  )

  lifecycle {
    ignore_changes = [description]
  }
}

module "decibel_x_ref_role" {
  source = "../../../modules/iam/roles/lambda_role"

  name_prefix                = local.name_prefix
  name                       = "x-ref-role"
  allow_execution_inside_vpc = true

  policies_list = [
    data.aws_iam_policy.secrets-services-ro.arn,
    data.aws_iam_policy.logging.arn,
  ]

  common_tags = merge(
    local.common_tags,
    {
      project                  = "Decibel",
      service                  = "Lambda",
      plat_env_project_service = "${local.aggregated_tag}_DCBL_LMB"
    }
  )
}

module "decibel_snowflake_etl_role" {
  source = "../../../modules/iam/roles/lambda_role"

  name_prefix                = local.name_prefix
  name                       = "snowflake-etl-role"
  allow_execution_inside_vpc = true

  policies_list = [
    data.aws_iam_policy.secrets-services-ro.arn,
    data.aws_iam_policy.logging.arn,
  ]

  common_tags = merge(
    local.common_tags,
    {
      project                  = "Decibel",
      service                  = "Lambda",
      plat_env_project_service = "${local.aggregated_tag}_DCBL_LMB"
    }
  )
}

module "decibel_s3_to_postgres_role" {
  source = "../../../modules/iam/roles/lambda_role"

  name_prefix                = local.name_prefix
  name                       = "s3-to-postgres-role"
  allow_execution_inside_vpc = true

  policies_list = [
    data.aws_iam_policy.secrets-services-ro.arn,
    data.aws_iam_policy.logging.arn,
  ]

  common_tags = merge(
    local.common_tags,
    {
      project                  = "Decibel",
      service                  = "Lambda",
      plat_env_project_service = "${local.aggregated_tag}_DCBL_LMB"
    }
  )
}

module "decibel_snowflake_to_s3_role" {
  source = "../../../modules/iam/roles/lambda_role"

  name_prefix                = local.name_prefix
  name                       = "snowflake-to-s3-role"
  allow_execution_inside_vpc = true

  policies_list = [
    data.aws_iam_policy.secrets-services-ro.arn,
    data.aws_iam_policy.logging.arn,
  ]

  common_tags = merge(
    local.common_tags,
    {
      project                  = "Decibel",
      service                  = "Lambda",
      plat_env_project_service = "${local.aggregated_tag}_DCBL_LMB"
    }
  )
}

module "decibel_update_status_role" {
  source = "../../../modules/iam/roles/lambda_role"

  name_prefix                = local.name_prefix
  name                       = "update-status-role"
  allow_execution_inside_vpc = true

  policies_list = [
    data.aws_iam_policy.secrets-services-ro.arn,
    data.aws_iam_policy.logging.arn,
  ]

  common_tags = merge(
    local.common_tags,
    {
      project                  = "Decibel",
      service                  = "Lambda",
      plat_env_project_service = "${local.aggregated_tag}_DCBL_LMB"
    }
  )
}
