resource "aws_elasticache_subnet_group" "main" {
  name       = "${local.name_prefix}-redis-subnet-group"
  subnet_ids = module.main_private_subnets.subnet_ids
}

# Notice: "default.redis2.8" is default parameter group. You cannot edit it. (aws_elasticache_cluster_default_parameter_group)
# Reference: https://github.com/wata727/tflint/blob/v0.12.1/docs/rules/aws_elasticache_cluster_default_parameter_group.md
resource "aws_elasticache_parameter_group" "main" {
  name   = "${local.name_prefix}-api-parameter-group"
  family = "redis2.8"
}

resource "aws_elasticache_parameter_group" "main_32" {
  name   = "${local.name_prefix}-redis32-parameter-group"
  family = "redis3.2"
}

resource "aws_elasticache_parameter_group" "main_redis6x" {
  family = "redis6.x"
  name   = "${local.name_prefix}-redis6x"

  parameter {
    name  = "timeout"
    value = "86400"
  }
}
/*
resource "aws_elasticache_cluster" "api_cache" {
  cluster_id           = "${local.name_prefix}-api"
  engine               = "redis"
  engine_version       = "6.x"
  parameter_group_name = aws_elasticache_parameter_group.main_redis6x.name
  node_type            = "cache.t3.small"
  num_cache_nodes      = 1
  subnet_group_name    = aws_elasticache_subnet_group.main.name
  security_group_ids   = [module.main_sg_map.redis_id]
  apply_immediately    = true
  port                 = 6379

  tags = merge(
    local.common_tags,
    {
      project                  = "Portal",
      service                  = "Elasticache",
      plat_env_project_service = "${local.aggregated_tag}_PRL_ELC"
    }
  )
}

resource "aws_elasticache_replication_group" "vendor_api_cache" {
  replication_group_id       = "${local.name_prefix}-vendor-api"
  description                = "Vendor API Redis Cache"
  engine                     = "redis"
  engine_version             = "6.x"
  parameter_group_name       = aws_elasticache_parameter_group.main_redis6x.name
  node_type                  = "cache.r6g.large"
  num_cache_clusters         = 1
  subnet_group_name          = aws_elasticache_subnet_group.main.name
  security_group_ids         = [module.main_sg_map.redis_id]
  apply_immediately          = true
  port                       = 6379
  at_rest_encryption_enabled = true
  transit_encryption_enabled = true

  tags = merge(
    local.common_tags,
    {
      project                  = "Portal",
      service                  = "Elasticache",
      plat_env_project_service = "${local.aggregated_tag}_PRL_ELC"
    }
  )
}
*/
// it's a cluster for filtr.com in dev environment
/*
resource "aws_elasticache_cluster" "filtr-www-app-cache" {
  cluster_id           = "${local.name_prefix}-www-cache"
  engine               = "redis"
  engine_version       = "6.x"
  parameter_group_name = aws_elasticache_parameter_group.main_redis6x.name
  node_type            = "cache.t3.medium"
  num_cache_nodes      = 1
  subnet_group_name    = aws_elasticache_subnet_group.main.name
  security_group_ids   = [module.main_sg_map.redis_id]
  apply_immediately    = true
  port                 = 6379

  tags = merge(
    local.common_tags,
    {
      project                  = "Portal",
      service                  = "Elasticache",
      plat_env_project_service = "${local.aggregated_tag}_PRL_ELC"
    }
  )
}
*/
/*
resource "aws_elasticache_cluster" "filtr-rep" {
  cluster_id           = "${local.name_prefix}-rep"
  engine               = "redis"
  engine_version       = "6.x"
  parameter_group_name = aws_elasticache_parameter_group.main_redis6x.name
  node_type            = "cache.t3.medium"
  num_cache_nodes      = 1
  subnet_group_name    = aws_elasticache_subnet_group.main.name
  security_group_ids   = [module.main_sg_map.redis_id]
  apply_immediately    = true
  port                 = 6379

  tags = merge(
    local.common_tags,
    {
      project                  = "Portal",
      service                  = "Elasticache",
      plat_env_project_service = "${local.aggregated_tag}_PRL_ELC"
    }
  )

  lifecycle {
    ignore_changes = [snapshot_arns]
  }
}
*/
