variable "span_exclusion_filters" {
  type = list(
    object({
    name    = string
    query   = string
    rate    = string
    enabled = optional(bool, true)
    })
  )
  default = [
    {
      name    = "datadog-lambda-filter"
      query   = "service:(datadog-forwarder OR datadoglambdafunction OR datadog-rds-enhanced-monitoring)"
      rate    = "0.0"
      enabled = true
    },
    {
      name    = "express-anonymous-filter"
      query   = "resource_name:\"<anonymous>\""
      rate    = "0.0"
      enabled = true
    },
    {
      name    = "flask-teardown-filter"
      query   = "resource_name:flask.do_teardown*"
      rate    = "0.0"
      enabled = true
    },
    {
      name    = "localhost-filter"
      query   = "resource_name:127.0.0.1"
      rate    = "0.0"
      enabled = true
    },
    {
      name    = "ows-project-manager-pymsql-filter"
      query   = "resource_name:SELECT* @base_service:ows-project-manager"
      rate    = "0.0"
      enabled = true
    },
    {
      name    = "owsrequest-dynamodb-filter"
      query   = "@peer.aws.dynamodb.table:prod-ows-request-authorization"
      rate    = "0.0"
      enabled = true
    },
    {
      name    = "pymysql-connection-read-only-transaction-filter"
      query   = "resource_name:pymysql.connection.* @base_service:(ows-project-manager OR ows-video OR ows-product-digital OR store-avail*)"
      rate    = "0.0"
      enabled = true
    },
    {
      name    = "python-aiohttprequest-filter"
      query   = "resource_name:aiohttp.request"
      rate    = "0.0"
      enabled = true
    },
    {
      name    = "redis-set-filter"
      query   = "resource_name:(MSET OR SET) service:redis"
      rate    = "0.0"
      enabled = true
    },
    {
      name    = "sentry-sdk-filter"
      query   = "resource_name:*sentry*"
      rate    = "0.0"
      enabled = true
    },
  ]
}

variable "span_inclusion_filters" {
  type = list(
    object({
    name    = string
    query   = string
    rate    = string
    enabled = optional(bool, true)
    })
  )
  default = [
    {
      name    = "default"
      query   = "analytics_enabled:true"
      rate    = "1"
      enabled = true
    },
    {
      name    = "graphql-router-no-env-supergraph-query-planning-retention-filter"
      query   = "service:graphql-router env:none resource_name:(supergraph OR query_planning)"
      rate    = "1"
      enabled = true
    },
    {
      name    = "graphql-service-retention-filter"
      query   = "service:graphql* env:prod operation_name:graphql.execute"
      rate    = "1"
      enabled = true
    },
    {
      name    = "graphql-slow-dns-lookups-retention-filter"
      query   = "@_top_level:1 env:prod operation_name:dns.lookup service:graphql-* -@dns.hostname:127.0.0.1 @duration:>=100000000"
      rate    = "1"
      enabled = true
    },
    {
      name    = "lambda-service-retention-filter"
      query   = "@_top_level:1 operation_name:aws.lambda env:prod"
      rate    = "1"
      enabled = true
    },
    {
      name    = "ows-service-retention-filter"
      query   = "@_top_level:1 env:prod service:ows* -@http.path_group:\"/hello/\""
      rate    = "1"
      enabled = true
    },
    {
      name    = "production-trace-root-retention-filter"
      query   = "@_trace_root:1 env:prod -@http.path_group:\"/hello/\""
      rate    = "1"
      enabled = true
    },
    {
      name    = "split-features-retention-filter"
      query   = "@_top_level:1 service:split operation_name:split.feature resource_name:split.feature"
      rate    = "1"
      enabled = true
    },
    {
      # Retain spans from SDLC training environments
      name    = "sdlc-training-retention-filter"
      query   = "service:ows-sdlc-training-*"
      rate    = "1"
      enabled = true
    },
    {
      name    = "playwright-tests-qa-retention-filter"
      query   = "service:playwright-tests env:qa"
      rate    = "1"
      enabled = true
    },
  ]
}

