# RDS cluster event subscription outputs
output "rds_cluster_event_subscription_arn" {
  value = aws_db_event_subscription.cluster_event_subscription.*.arn
}

output "rds_cluster_event_subscription_id" {
  value = aws_db_event_subscription.cluster_event_subscription.*.id
}

# RDS instance event subscription outputs
output "rds_instance_event_subscription_arn" {
  value = aws_db_event_subscription.instance_event_subscription.*.arn
}

output "rds_instance_event_subscription_id" {
  value = aws_db_event_subscription.instance_event_subscription.*.id
}

# RDS cluster outputs
output "rds_cluster_backup_retention_period" {
  value = element(
    concat(aws_rds_cluster.rds_cluster.*.backup_retention_period, [""]),
    0,
  )
}

output "rds_cluster_database_name" {
  value = element(concat(aws_rds_cluster.rds_cluster.*.database_name, [""]), 0)
}

output "rds_cluster_endpoint" {
  value = element(concat(aws_rds_cluster.rds_cluster.*.endpoint, [""]), 0)
}

output "rds_cluster_engine" {
  value = element(concat(aws_rds_cluster.rds_cluster.*.engine, [""]), 0)
}

output "rds_cluster_engine_version" {
  value = element(
    concat(aws_rds_cluster.rds_cluster.*.engine_version, [""]),
    0,
  )
}

output "rds_cluster_hosted_zone_id" {
  value = element(
    concat(aws_rds_cluster.rds_cluster.*.hosted_zone_id, [""]),
    0,
  )
}

output "rds_cluster_id" {
  value = element(concat(aws_rds_cluster.rds_cluster.*.id, [""]), 0)
}

output "rds_cluster_identifier" {
  value = element(
    concat(aws_rds_cluster.rds_cluster.*.cluster_identifier, [""]),
    0,
  )
}

output "rds_cluster_master_username" {
  value = element(
    concat(aws_rds_cluster.rds_cluster.*.master_username, [""]),
    0,
  )
}

output "rds_cluster_port" {
  value = element(concat(aws_rds_cluster.rds_cluster.*.port, [""]), 0)
}

output "rds_cluster_preferred_backup_window" {
  value = element(
    concat(aws_rds_cluster.rds_cluster.*.preferred_backup_window, [""]),
    0,
  )
}

output "rds_cluster_preferred_maintenance_window" {
  value = element(
    concat(
      aws_rds_cluster.rds_cluster.*.preferred_maintenance_window,
      [""],
    ),
    0,
  )
}

output "rds_cluster_reader_endpoint" {
  value = element(
    concat(aws_rds_cluster.rds_cluster.*.reader_endpoint, [""]),
    0,
  )
}

output "rds_cluster_resource_id" {
  value = element(
    concat(aws_rds_cluster.rds_cluster.*.cluster_resource_id, [""]),
    0,
  )
}

#RDS Serverless cluster outputs
output "rds_serverless_cluster_backup_retention_period" {
  value = element(
    concat(
      aws_rds_cluster.rds_serverless_cluster.*.backup_retention_period,
      [""],
    ),
    0,
  )
}

output "rds_serverless_cluster_database_name" {
  value = element(
    concat(aws_rds_cluster.rds_serverless_cluster.*.database_name, [""]),
    0,
  )
}

output "rds_serverless_cluster_endpoint" {
  value = element(
    concat(aws_rds_cluster.rds_serverless_cluster.*.endpoint, [""]),
    0,
  )
}

output "rds_serverless_cluster_engine" {
  value = element(
    concat(aws_rds_cluster.rds_serverless_cluster.*.engine, [""]),
    0,
  )
}

output "rds_serverless_cluster_engine_version" {
  value = element(
    concat(
      aws_rds_cluster.rds_serverless_cluster.*.engine_version,
      [""],
    ),
    0,
  )
}

output "rds_serverless_cluster_hosted_zone_id" {
  value = element(
    concat(
      aws_rds_cluster.rds_serverless_cluster.*.hosted_zone_id,
      [""],
    ),
    0,
  )
}

output "rds_serverless_cluster_id" {
  value = element(concat(aws_rds_cluster.rds_serverless_cluster.*.id, [""]), 0)
}

output "rds_serverless_cluster_identifier" {
  value = element(
    concat(
      aws_rds_cluster.rds_serverless_cluster.*.cluster_identifier,
      [""],
    ),
    0,
  )
}

output "rds_serverless_cluster_master_username" {
  value = element(
    concat(
      aws_rds_cluster.rds_serverless_cluster.*.master_username,
      [""],
    ),
    0,
  )
}

output "rds_serverless_cluster_port" {
  value = element(
    concat(aws_rds_cluster.rds_serverless_cluster.*.port, [""]),
    0,
  )
}

output "rds_serverless_cluster_preferred_backup_window" {
  value = element(
    concat(
      aws_rds_cluster.rds_serverless_cluster.*.preferred_backup_window,
      [""],
    ),
    0,
  )
}

output "rds_serverless_cluster_preferred_maintenance_window" {
  value = element(
    concat(
      aws_rds_cluster.rds_serverless_cluster.*.preferred_maintenance_window,
      [""],
    ),
    0,
  )
}

output "rds_serverless_cluster_reader_endpoint" {
  value = element(
    concat(
      aws_rds_cluster.rds_serverless_cluster.*.reader_endpoint,
      [""],
    ),
    0,
  )
}

output "rds_serverless_cluster_resource_id" {
  value = element(
    concat(
      aws_rds_cluster.rds_serverless_cluster.*.cluster_resource_id,
      [""],
    ),
    0,
  )
}

output "rds_aws_security_group_id" {
  value = aws_security_group.rds-sg.id
}

# Route53 CNAME output for rds cluster.
output "aws_route53_record_rds_cluster_cname" {
  value = var.route53_record_creation_enabled ? aws_route53_record.networking_rds_cluster_cname[0].fqdn : null
}

# Route53 CNAME output for rds read only cluster.
output "aws_route53_record_rds_ro_cluster_cname" {
  value = var.route53_record_creation_enabled ? aws_route53_record.networking_rds_cluster_cname[0].fqdn : null
}

output "rds_instance_endpoints" {
  value = aws_rds_cluster_instance.cluster_instances[*].endpoint
}

# rds proxy outputs
output "rds_proxy_endpoint" {
  value = element(concat(aws_db_proxy_target.rds_proxy_target.*.endpoint, [""]), 0)
}

output "rds_proxy_iam_role" {
  value = element(concat(aws_iam_role.rds_proxy_role.*.name, [""]), 0)
}
