Cara run?
go run main.go- kalau mau tes--misalnya--. Buka
localhost:port/swagger/index.html
# clone the repository
git clone [this_git_url]
# set up environment
cp .env.example .env
# go run
go run main.goCreate a .env file in the root directory with the following variables:
DB_HOST=localhost
DB_USER=user
DB_PASSWORD=pw
DB_NAME=ps3t
DB_PORT=5432 #Example: postgresql
PORT=3000
MODE=DEBUG
PROD_HOST=#Your production host
DEBUG_HOST=0.0.0.0In Go, there are two ways to run the app
# For build, run this command
go build -o .build/<name-of-build.extension>
# NOTE: it is important to put the build inside of the .build folder
# to ensure the gitignore caught up with the files
# After build go application
.build/<name-of-build.extension># just do this
go run main.go
# then your operating system asking for firewall permissiondocker-compose up -d
# Dengan flag -d untuk menjalankan container di background (detached mode).
## Dengan menggunakan -d, terminal akan langsung kembali ke prompt tanpa menampilkan log container di terminal.
## Container akan terus berjalan di background setelah perintah ini dijalankan.
# Kalau mau tambah flag --build jika ada perubahan pada Dockerfile
docker-compose up -d --build
## Flag --build digunakan untuk memaksa Docker Compose membangun ulang image sebelum menjalankan container.
## Biasanya digunakan ketika ada perubahan pada Dockerfile atau file yang terkait dengan image.
## Perintah ini akan melakukan build ulang image dan kemudian menjalankan container di background.
# Jika ingin menggunakan container database postgres di local bisa menggunakan argument berikut: --profile local
contoh: docker compose --profile local up -d --buildOne the applicatio is running, you can access the Swagger API documentation at:
http://localhost:3000/swagger/index.htmlCaranya adalah
- Setup dari dependensi dasar sebuah service yang sekiranya tidak membutuhkan dependensi service lain, bisa cek pada
di/injector.go - Siapkan constructor dari sebuah service
- Siapkan injector dengan memanggilkan
MustInvokepada servis yang di-dependensi - Kembali pada
di/injector.godan lakukan dengando.Providediurutan terbawah setelah service yang di-dependensikan - Jika service tersebut dibutukan pada
routerlakukan dengan cara seperti ini, contoh
authHandler := do.MustInvoke[authHandler.AuthorizationHandler](di.Injector)cara melakukan migrasi database menggunakan golang-migrate dengan opsi manual atau otomatis melalui konfigurasi di file .env.
- Pastikan Anda telah menginstall CLI
golang-migrate. - File
.envmemiliki konfigurasi berikut:
ENABLE_AUTO_MIGRATION=FALSEJika ENABLE_AUTO_MIGRATION diset ke FALSE, migrasi perlu dijalankan secara manual menggunakan CLI.
-
Migration Up
Gunakan perintah berikut untuk menjalankan semua migrasi ke versi terbaru:
migrate -database "postgres://username:password@localhost:5432/dbname?sslmode=disable" -path database/migrations upGantilah
username,password,localhost,5432, dandbnamedengan informasi koneksi database Anda. -
Migration Down
Gunakan perintah berikut untuk menurunkan versi migrasi satu langkah ke bawah:
migrate -database "postgres://username:password@localhost:5432/dbname?sslmode=disable" -path database/migrations downGantilah
username,password,localhost,5432, dandbnamedengan informasi koneksi database Anda. -
Membuat File Migration Baru
Untuk membuat file migrasi baru, gunakan perintah berikut:
migrate create -ext sql -dir database/migrations <NameMigrationFile>
Jika ENABLE_AUTO_MIGRATION diset ke TRUE, migrasi akan dijalankan secara otomatis ketika aplikasi dijalankan.
If you want to read more about the load test result and its analysis, you can check this document.