80 lines
2.0 KiB
Markdown
80 lines
2.0 KiB
Markdown
# 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 <project_name>
|
|
|
|
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 <project_name>
|
|
|
|
swag init -g cmd/api/main.go -o docs
|
|
````
|
|
|
|
## Unit Testing
|
|
````bash
|
|
// masuk ke root project
|
|
cd <project_name>
|
|
|
|
go test -v ./internal/...
|
|
````
|
|
|
|
## Build project
|
|
````bash
|
|
// masuk ke root project
|
|
cd <project_name>
|
|
|
|
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-<i><b>disabled</b></i> dengan cara memberikan nilai false di file `.env` bagian `KEYCLOAK_IS_ENABLE`
|
|
```
|
|
#KEYCLOAK CREDENTIAL
|
|
..
|
|
..
|
|
KEYCLOAK_IS_ENABLE=false
|
|
``` |