data "aws_secretsmanager_secret" "datadog_api" {
  name = "${var.environment}/datadog/DD_API_KEY"
}

data "aws_secretsmanager_secret_version" "datadog_api" {
  secret_id = data.aws_secretsmanager_secret.datadog_api.id
}

data "aws_secretsmanager_secret" "datadog_app_key" {
  name = "${var.environment}/datadog/DD_APP_KEY"
}

data "aws_secretsmanager_secret_version" "datadog_app_key" {
  secret_id = data.aws_secretsmanager_secret.datadog_app_key.id
}

# Datadog provider
provider "datadog" {
  api_key = data.aws_secretsmanager_secret_version.datadog_api.secret_string
  app_key = data.aws_secretsmanager_secret_version.datadog_app_key.secret_string
}

resource "datadog_monitor" "gda_score_calculation_review_monitor" {
  name    = "${var.environment}-${var.service_name}-review-monitor"
  type    = "metric alert"
  message = "[${var.environment}] gda-score-calculation review monitor detected abnormal activity."

  query = "avg(last_2d):anomalies(sum:gda_score_calculation_reviews{*}.as_count(), 'basic', 2, direction='both', interval=600, alert_window='last_2h', count_default_zero='true', seasonality='hourly') > 1"

  monitor_thresholds {
    critical = 1
  }

  notify_no_data      = false
  notify_audit        = false
  renotify_interval   = 0
  timeout_h           = 0
  require_full_window = false
  evaluation_delay    = 900

  tags = [
    "environment:${var.environment}",
    "service_name:${var.environment}-${var.service_name}"
  ]
}

resource "datadog_monitor" "gda_score_calculation_approval_monitor" {
  name    = "${var.environment}-${var.service_name}-approval-monitor"
  type    = "metric alert"
  message = "[${var.environment}] gda-score-calculation approval monitor detected abnormal activity."

  query = "avg(last_2d):anomalies(sum:gda_score_calculation_approvals{*}.as_count(), 'basic', 2, direction='both', interval=600, alert_window='last_2h', count_default_zero='true', seasonality='hourly') > 1"

  monitor_thresholds {
    critical = 1
  }

  notify_no_data      = false
  notify_audit        = false
  renotify_interval   = 0
  timeout_h           = 0
  require_full_window = false
  evaluation_delay    = 900

  tags = [
    "environment:${var.environment}",
    "service_name:${var.environment}-${var.service_name}"
  ]
}

resource "datadog_monitor" "gda_score_calculation_activity_monitor" {
  name    = "${var.environment}-${var.service_name}-activity-monitor"
  type    = "composite"
  message = "[${var.environment}] gda-score-calculation review/approval monitors detected abnormal activity. Notify: ${var.notification_endpoints}"

  query = "72537684 && 72537683"

  monitor_thresholds {
    critical = 1
  }

  notify_no_data      = false
  notify_audit        = false
  renotify_interval   = 0
  require_full_window = false

  tags = [
    "environment:${var.environment}",
    "service_name:${var.environment}-${var.service_name}"
  ]
}
