{
  "name": "PostgreSQL sorgu karışımı (query mix)",
  "scenarios": [
    {
      "name": "uretim_profili",
      "executor": { "type": "ramping-vus", "startVUs": 0,
        "stages": [ { "duration": "1m", "target": 40 }, { "duration": "10m", "target": 40 }, { "duration": "30s", "target": 0 } ] },
      "steps": [
        { "id": "orders", "name": "Sipariş sorguları", "protocol": "sql", "connection": "orders-db",
          "sql": { "mix": [
            { "name": "order_by_id", "query": "SELECT id, status, total FROM orders WHERE id = $1",
              "params": ["{{$randInt 1 100000}}"], "weight": 120000 },
            { "name": "customer_orders", "query": "SELECT id, status, total, created_at FROM orders WHERE customer_id = $1 ORDER BY created_at DESC LIMIT 20",
              "params": ["{{$randInt 1 20000}}"], "weight": 45000 },
            { "name": "pending_count", "query": "SELECT count(*) FROM orders WHERE status = $1",
              "params": ["pending"], "weight": 6000 },
            { "name": "hourly_summary", "query": "SELECT date_trunc('hour', created_at) AS h, count(*), sum(total) FROM orders WHERE created_at > now() - interval '1 day' GROUP BY 1 ORDER BY 1",
              "weight": 400 }
          ] } }
      ]
    }
  ],
  "thresholds": [
    { "metric": "sql_query_duration", "filter": { "check": "order_by_id" }, "expr": "p(95)<20" },
    { "metric": "sql_query_duration", "filter": { "check": "customer_orders" }, "expr": "p(95)<50" },
    { "metric": "sql_query_duration", "filter": { "check": "hourly_summary" }, "expr": "p(95)<500" },
    { "metric": "req_failed", "expr": "rate<0.001" }
  ]
}
