DEV Community

JaisySymuri
JaisySymuri

Posted on

Membuka Koneksi ke Postgres Database dengan Golang

Cek file-file v1

Repository/source code: https://github.com/JaisySymuri/postgre

Buat project baru (ex: postgre), kemudian di terminal ketik "go mod init " yang dilanjutkan dengan yang anda inginkan. Biasanya nama folder project tersebut atau alamat git.

go mod init postgre
Enter fullscreen mode Exit fullscreen mode

Untuk belajar sendiri cukup pakai nama folder saja, namun jika anda berniat membagikan project anda, lebih baik menggunakan alamat git.

 go mod init github.com/JaisySymuri/postgre
Enter fullscreen mode Exit fullscreen mode

Di tutorial ini karena saya tidak akan memanggil fungsi dari folder lain, maka tidak akan ada bedanya antara nama folder atau alamat git. Tapi jika anda memanggil fungsi dari , maka akan ada perbedaan di bagian import.

import (
    "postgre/folder_lain"   
)
Enter fullscreen mode Exit fullscreen mode

vs

import (
    "github.com/JaisySymuri/postgre/folder_lain"    
)
Enter fullscreen mode Exit fullscreen mode

IDE VScode ataupun GoLand cukup pintar untuk mendeteksi package apa yang anda butuhkan dan otomatis import sendiri. Namun jika ada salah import atau IDE tidak bisa mendeteksi package yang dibutuhkan, anda perlu menambahnya secara manual.

Oke, selanjutnya buat file main.go dengan package main. Kemudian masukkan kode berikut:

package main

// const berisi variable database yang ingin kita hubungi
const (
    host     = "localhost"
    port     = 9393
    user     = "postgres"
    password = "Sandhiguna"
    dbname   = "tutorial"
)

// dbConn berfungsi untuk menghubungi database
func dbConn() (db *sql.DB) {
    psqlconn := fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s sslmode=disable", host, port, user, password, dbname)

    db, err := sql.Open("postgres", psqlconn)
    if err != nil {
        log.Fatal("Could not connect to the database:", err)
    }

    return db
}

Enter fullscreen mode Exit fullscreen mode

Di VScode, jika anda tekan Ctrl+S, IDE akan otomatis import package yang dibutuhkan. Di GoLand, anda tidak perlu lakukan apa-apa dan dia import otomatis.

Untuk database package sudah terimport secara otomatis, yaitu "database/sql". Namun itu tidak cukup, juga perlu import drivernya

go get github.com/lib/pq
Enter fullscreen mode Exit fullscreen mode

kemudian di import kita tambahkan sendiri nama drivernya. Karena fungsi driver sendiri tidak digunakan, kita hanya perlu inisiasinya saja, maka kita perlu memambah tanda "_" di sebelum driver. Seperti ini:

import (
    "database/sql"
    "fmt"
    "log"
    _ "github.com/lib/pq"
)
Enter fullscreen mode Exit fullscreen mode

"psqlconn" adalah variable yang menggabungkan constanta yang kita tulis sebelumnya. Kemudiang kita menggunakan fungsi "Open" milik package "sql" untuk membuka koneksi. Kemudian atur penanganan error dan return

Unit Test

Untuk mengecek apakah koneksi benar-benar terhubung, kita akan menggunakan unit test. Buat folder baru dengan nama "test" dan buat file "connection_test.go" dengan package test. Perlu diingat, file unit test wajib berakhiran "_test.go". Copy Paste code sebelumnya dan edit sedikit seperti berikut:

const (
    host     = "localhost"
    port     = 9393
    user     = "postgres"
    password = "Sandhiguna"
    dbname   = "tutorial"
)

func TestDbConn(t *testing.T) {
    psqlconn := fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s sslmode=disable", host, port, user, password, dbname)

    db, err := sql.Open("postgres", psqlconn)
    if err != nil {
        log.Fatal("Could not connect to the database:", err)
    }

    db.Close()
}

Enter fullscreen mode Exit fullscreen mode


js

Ubah nama fungsi dan ganti return di bagian bawah sebagai db.Close. Tambahkan driver secara manual di import seperti sebelumnya. Di VS code, clik tombol play berwarna hijau disamping fungsi test, jika berhasil akan keluar output seperti ini:

=== RUN   TestDbConn
--- PASS: TestDbConn (0.00s)
PASS
ok      github.com/JaisySymuri/postgre/test     1.010s

Enter fullscreen mode Exit fullscreen mode

Terakhir, untuk mempermudah transfer knowledge dan rollback, maka main.go akan saya copy, rename menjadi main-v1.go, select all kecuali package kemudian ctrl+/ untuk merubahnya menjadi komentar. Jadi jika anda baru mempelajari tahap ini, anda tidak akan bingung saat anda mengecek repository yang sudah lengkap hingga tahap akhir. Cukup cek file-file v1. Proses rollback juga akan jadi lebih mudah

Repository/source code: https://github.com/JaisySymuri/postgre

Top comments (0)