Golang
  • Daftar isi
  • Pengenalan Golang
  • Cara instalasi Golang
  • Cara menjalankan Golang
  • Cara mendeklarasikan variabel di Golang
  • Apa saja tipe-tipe data di Golang
  • Cara Konversi Tipe Data di Golang
  • Apa saja operator-operator di Golang
  • Cara melakukan seleksi kondisi di Golang
  • Cara melakukan perulangan di Golang
  • Cara membuat Array di Golang
  • Cara membuat Slice di Golang
  • Cara membuat Slice dengan Operator Slice
  • Cara membuat Map di Golang
  • Cara membuat Pointer di Golang
  • Cara membuat Function di Golang
  • Cara membuat Package di Golang
  • Cara membuat multi return Function di Golang
  • Cara membuat Struct di Golang
  • Cara membuat method di Golang
  • Cara membuat Defer dan Scope di Golang
  • Cara membuat underscore(blank) di Golang
  • Cara membuat Goroutine di Golang
  • Cara membuat Channels di Golang
  • Cara membuat WaitGroup di Golang
  • Cara membuat Select statement di Golang
  • Cara membuat Http Server di Golang
  • Cara membuat Http Server di Golang part 2
  • Cara membuat Http Server di Golang part 3
  • Cara membuat Http Server di Golang part 4
  • Pengenalan Testing di Go
  • Membuat Unit Test di Go
Powered by GitBook
On this page

Cara membuat Http Server di Golang part 4

Dalam kasus ini, kita akan membuat migrasi menggunakan package "github.com/subosito/gotenv" untuk mengelola variabel lingkungan dari file .env. Berikut adalah struktur proyek yang sesuai dengan persyaratan yang telah Anda tentukan:

project-folder/
  ├── go.mod
  ├── main.go
  ├── .env
  └── src
      └── Config
           └── db.go
      └── Controllers
           └── products.go
      └── Models
           └── products.go
      └── helper
           └── migration.go
  1. Membuat Migration di helper/migration.go:

package helper

import (
	"github.com/jinzhu/gorm"
	"github.com/subosito/gotenv"
	"os"
	"project-folder/src/Config"
	"project-folder/src/Models"
)

func LoadEnv() {
	err := gotenv.Load(".env")
	if err != nil {
		panic("Error loading .env file")
	}
}

func MigrateDatabase() {
	Config.DB.AutoMigrate(&Models.Product{})
}
  1. Ubah main.go untuk Memanggil Migration dan Load Env:

package main

import (
	"fmt"
	"net/http"
	"project-folder/src/Config"
	"project-folder/src/Controllers"
	"project-folder/src/helper"
)

func main() {
	// Load environment variables from .env file
	helper.LoadEnv()

	// Initialize database connection
	Config.InitDB()
	defer Config.DB.Close()

	// Run database migration
	helper.MigrateDatabase()

	// Set up routes and start the server
	http.HandleFunc("/product", Controllers.GetAllProducts)
	http.HandleFunc("/product/create", Controllers.CreateProduct)
	http.HandleFunc("/product/update", Controllers.UpdateProduct)
	http.HandleFunc("/product/delete", Controllers.DeleteProduct)

	port := os.Getenv("PORT")
	if port == "" {
		port = "8080"
	}
	serverAddr := fmt.Sprintf(":%s", port)

	fmt.Println("Server started at port", serverAddr)
	http.ListenAndServe(serverAddr, nil)
}
  1. Ubah Config/db.go untuk Mengambil Data dari .env:

package Config

import (
	"github.com/jinzhu/gorm"
	"github.com/subosito/gotenv"
	"os"
)

var DB *gorm.DB

func InitDB() {
	// Load environment variables from .env file
	err := gotenv.Load()
	if err != nil {
		panic("Error loading .env file")
	}

	// Get database credentials from environment variables
	host := os.Getenv("DB_HOST")
	port := os.Getenv("DB_PORT")
	user := os.Getenv("DB_USER")
	password := os.Getenv("DB_PASSWORD")
	dbName := os.Getenv("DB_NAME")

	// Establish database connection
	DB, err = gorm.Open("postgres", "host="+host+" port="+port+" user="+user+" dbname="+dbName+" password="+password+" sslmode=require")
	if err != nil {
		panic("failed to connect database")
	}
}
  1. Tambahkan Variabel Lingkungan ke .env File:

DB_HOST=pg-20772f0a-laravel.aivencloud.com
DB_PORT=21980
DB_USER=avnadmin
DB_PASSWORD=AVNS_F21ay59vewp2Aprj_pT
DB_NAME=defaultdb
PORT=8080

Dengan langkah-langkah ini, proyek Anda sekarang memanfaatkan package "github.com/subosito/gotenv" untuk mengelola variabel lingkungan dari file .env dan menggunakan file helper/migration.go untuk melakukan migrasi basis data. Pastikan Anda telah menginstal package "github.com/subosito/gotenv" menggunakan perintah go get github.com/subosito/gotenv sebelum menjalankan aplikasi Anda.

PreviousCara membuat Http Server di Golang part 3NextPengenalan Testing di Go

Last updated 1 year ago