Files
be-service-qris/tools/HANDLER.md

3.5 KiB

Handler Generator CLI Tool

CLI tool untuk generate handler baru secara otomatis dengan swagger documentation.

Cara Penggunaan

Windows

# Buka terminal di folder tools
generate.bat <nama-handler> [methods]

# Contoh:
generate.bat user get post
generate.bat product get post put delete

Linux/Mac

# Buka terminal di folder tools
./generate.sh <nama-handler> [methods]

# Contoh:
./generate.sh user get post
./generate.sh product get post put delete

Langsung dengan Go

# Dari root project
go run tools/generate-handler.go <nama-handler> [methods]

# Contoh:
go run tools/generate-handler.go user get post put delete
go run tools/generate-handler.go product get post

Method yang Tersedia

  • get - GET endpoint untuk list data
  • post - POST endpoint untuk create data
  • put - PUT endpoint untuk update data
  • delete - DELETE endpoint untuk delete data

File yang Dibuat Otomatis

  1. Handler: internal/handlers/<nama>/<nama>.go
  2. Models: internal/models/<nama>/<nama>.go
  3. Routes: Update otomatis di internal/routes/v1/routes.go
  • : Nama Directori
  • .go: Nama file class

Contoh Penggunaan

1. Generate Handler dengan GET dan POST

./generate.sh user get post

2. Generate Handler dengan semua method

./generate.sh product get post put delete

3. Generate Handler dengan custom method

./generate.sh order get post delete

Langkah Setelah Generate

  1. Jalankan swagger generator:
swag init -g cmd/api/main.go
  1. Jalankan aplikasi:
go run cmd/api/main.go
  1. Akses swagger UI:
http://localhost:8080/swagger/index.html

Struktur File yang Dibuat

Handler File (internal/handlers/<nama>/<nama>.go)

  • Struct handler
  • Constructor function
  • Endpoint methods dengan swagger documentation
  • Error handling
  • Import models dari api-service/internal/models/<nama>

Model File (internal/models/<nama>/<nama>.go)

  • Request models
  • Response models
  • Error response models
  • Package name sesuai dengan nama handler

Routes Update

  • Otomatis menambahkan routes ke /api/v1/<nama-plural>
  • Support parameter ID untuk endpoint spesifik
  • Menggunakan componentHandlers untuk handler baru

Contoh Output

Untuk command: ./generate.sh user get post

Handler yang dibuat:

  • GET /api/v1/users - List users
  • GET /api/v1/users/:id - Get user by ID
  • POST /api/v1/users - Create new user

Struktur Direktori:

internal/
├── handlers/
│   └── user/
│       └── user.go
├── models/
│   └── user/
│       └── user.go

Swagger Documentation

Semua endpoint otomatis memiliki swagger documentation yang bisa diakses di:

http://localhost:8080/swagger/index.html

Tips Penggunaan

  1. Nama Handler: Gunakan nama singular (user, product, order)
  2. Method: Pilih method sesuai kebutuhan CRUD
  3. Custom Fields: Edit file models yang dibuat untuk menambahkan custom fields
  4. Service Layer: Tambahkan service layer untuk business logic yang kompleks
  5. Repository Layer: Tambahkan repository layer untuk database operations

Troubleshooting

Jika generate gagal:

  • Pastikan berada di root project
  • Pastikan file internal/routes/v1/routes.go ada
  • Pastikan permission untuk menulis file

Jika routes tidak muncul:

  • Cek file internal/routes/v1/routes.go untuk duplikasi nama handler
  • Pastikan tidak ada nama handler yang sama dengan yang sudah ada