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

149 lines
3.5 KiB
Markdown

# Handler Generator CLI Tool
CLI tool untuk generate handler baru secara otomatis dengan swagger documentation.
## Cara Penggunaan
### Windows
```bash
# 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
```bash
# 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
```bash
# 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>**: `Nama Directori`
- **<nama>.go**: `Nama file class`
## Contoh Penggunaan
### 1. Generate Handler dengan GET dan POST
```bash
./generate.sh user get post
```
### 2. Generate Handler dengan semua method
```bash
./generate.sh product get post put delete
```
### 3. Generate Handler dengan custom method
```bash
./generate.sh order get post delete
```
## Langkah Setelah Generate
1. Jalankan swagger generator:
```bash
swag init -g cmd/api/main.go
```
2. Jalankan aplikasi:
```bash
go run cmd/api/main.go
```
3. 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