package main

import (
	"database/sql"
	"fmt"
)

// Skenario menggambarkan beban sebuah aplikasi terhadap database.
type Skenario struct {
	nama        string
	qps         float64
	durasiQuery float64 // dalam detik
}

func main() {
	// sql.DBStats menampung seluruh metrik pool; sebelum pool
	// dipakai, seluruh nilainya masih nol.
	var statistik sql.DBStats
	fmt.Printf("DBStats awal: %+v\n", statistik)

	skenario := []Skenario{
		{nama: "API ringan", qps: 50, durasiQuery: 0.002},
		{nama: "API sibuk", qps: 400, durasiQuery: 0.010},
		{nama: "laporan berat", qps: 20, durasiQuery: 0.750},
	}

	fmt.Println("perkiraan konkurensi = QPS x durasi query:")
	for _, s := range skenario {
		konkurensi := s.qps * s.durasiQuery
		fmt.Printf("%-15s QPS=%6.0f  durasi=%6.3fs  koneksi=%5.2f\n",
			s.nama, s.qps, s.durasiQuery, konkurensi)
	}
}
