Golang Database Driver
1. MySQL
2. PostgreSQL
Link code
Golang Database Pool
Close koneksi database
Last updated
Last updated
db.SetMaxIdleConns(10) // setMaxIdelConns -> pengaturan jumlah koneksi minimal yang dibuat saat aplikasi connect ke database
db.SetMaxOpenConns(50) // setMaxOpenConns -> pengaturan jumlah koneksi maksimal dibuat
db.SetConnMaxIdleTime(5 * time.Minute) // setConnMaxIdleTime -> contoh ada 10 koneksi tidak digunakan selamat durasi waktu tertentu, maka akan di close
db.SetConnMaxLifetime(60 * time.Minute) // setConnMaxLifeTime -> contoh koneksi sudah mencapai waktu tertentu, maka akan di close atau memperbaruhi koneksi yang lamapackage client
import (
"fmt"
"log"
"time"
"database/sql"
_ "github.com/go-sql-driver/mysql"
_ "github.com/jackc/pgx/v5/stdlib"
)
func GetDBConnection(driver string) (db *sql.DB) {
var connString string
if driver == "mysql" {
// "username:password@tcp(host:port)/database_name"
connString = fmt.Sprintf("%s:%s@tcp(%s:%d)/%v",
"root", "@Ugm428660", "localhost", 3306, "bootcamp")
} else if driver == "pgx" {
// urlExample := "postgres://username:password@localhost:5432/database_name"
connString = fmt.Sprintf("postgres://%s:%s@%s:%d/%s",
"postgres", "@Ugm428660", "localhost", 5432, "postgres")
}
db, err := sql.Open(driver, connString)
if err != nil {
panic(err)
}
log.Printf("Running database")
db.SetMaxIdleConns(2)
db.SetMaxOpenConns(5)
db.SetConnMaxIdleTime(10 * time.Minute)
db.SetConnMaxLifetime(60 * time.Minute)
return
}defer db.Close()