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

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

resource "aws_elasticache_parameter_group" "main_memcached15" {
  family = "memcached1.5"
  name   = "${local.name_prefix}-memcached15"
}

resource "aws_elasticache_parameter_group" "main_redis6x" {
  family = "redis6.x"
  name   = "${local.name_prefix}-redis6x"
}
/*
resource "aws_elasticache_cluster" "api_cache" {
  cluster_id           = "${local.name_prefix}-images-api"
  engine               = "memcached"
  engine_version       = "1.5.16"
  parameter_group_name = aws_elasticache_parameter_group.main_memcached15.name
  node_type            = "cache.t3.small"
  num_cache_nodes      = 1
  subnet_group_name    = aws_elasticache_subnet_group.main_memcached.name
  security_group_ids   = [module.main_sg_map.memcached_id]
  apply_immediately    = true
  port                 = 11211

  tags = merge(
    local.common_tags,
    {
      project                  = "Core",
      service                  = "Elasticache",
      plat_env_project_service = "${local.aggregated_tag}_CORE_ELC"
    }
  )
}
*/
resource "aws_elasticache_replication_group" "images_api_cache" {
  replication_group_id       = "${local.name_prefix}-images-api-cache"
  description                = "Caching layer for images api"
  engine                     = "redis"
  engine_version             = "6.x"
  parameter_group_name       = aws_elasticache_parameter_group.main_redis6x.name
  node_type                  = "cache.t3.small"
  num_cache_clusters         = 1
  subnet_group_name          = aws_elasticache_subnet_group.main_redis.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                  = "Core",
      service                  = "Elasticache",
      plat_env_project_service = "${local.aggregated_tag}_CORE_ELC"
    }
  )
}

resource "aws_elasticache_replication_group" "um_queue" {
  replication_group_id       = "${local.name_prefix}-um-celery"
  description                = "Atlas UM Celery queue"
  engine                     = "redis"
  engine_version             = "6.x"
  parameter_group_name       = aws_elasticache_parameter_group.main_redis6x.name
  node_type                  = "cache.t3.small"
  num_cache_clusters         = 1
  subnet_group_name          = aws_elasticache_subnet_group.main_redis.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                  = "Core",
      service                  = "Elasticache",
      plat_env_project_service = "${local.aggregated_tag}_CORE_ELC"
    }
  )
}
