# API ANTRIAN OPERASI REST API menggunakan GO dengan framework GIN ## Tech Stack - Go - Gin - PostgreSQL - Docker Compose - Swagger (swaggo) ## Struktur Folder ``` api-service/ ├── 📁 cmd/ │ ├── api/main.go # Entry points aplikasi ├── 📁 docs/ # Output Dokumentasi swagger ├── 📁 internal/ | |__ config/ # File konfigurasi | |__ database/ # Package fungsi database (connection, execution, etc) | |__ domain/ # Core business logic | |__ middleware/ # Package middleware | |__ routes/ # Wiring untuk register semua routing yang dipakai | |__ server/ # Inisiasi server API | |__ shared/ # Fungsi umum yang bisa digunakan di berbagai domain | |__ utils/ # Fungsi utilisasi untuk query builder ├── 📁 migrations/ # Folder query database (test-purpose) | |__ DDL.sql/ | |__ seeds.sql/ ```` ## Instalasi go package ```bash cd go mod tidy ``` ## Menjalankan postgres di docker Jika menggunakan windows, pastikan docker desktop sudah berjalan. ````bash docker compose up -d ```` ## Generate dokumentasi swagger Pastikan sudah menulis komentar dengan format dari swagger di handler endpoint ````bash // masuk ke root project cd swag init -g cmd/api/main.go -o docs ```` ## Unit Testing ````bash // masuk ke root project cd go test -v ./internal/... ```` ## Build project ````bash // masuk ke root project cd go build ./cmd/api ```` ## Disabled/Enabled Keycloak Authentication Project ini menggunakan autentikasi dengan token dari keycloak. Untuk kebutuhan debugging yang tidak membutuhkan autentikasi, keycloak dapat di-disabled dengan cara memberikan nilai false di file `.env` bagian `KEYCLOAK_IS_ENABLE` ``` #KEYCLOAK CREDENTIAL .. .. KEYCLOAK_IS_ENABLE=false ```