# 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 [methods] # Contoh: generate.bat user get post generate.bat product get post put delete ``` ### Linux/Mac ```bash # Buka terminal di folder tools ./generate.sh [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 [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//.go` 2. **Models**: `internal/models//.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 ```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//.go`) - Struct handler - Constructor function - Endpoint methods dengan swagger documentation - Error handling - Import models dari `api-service/internal/models/` ### Model File (`internal/models//.go`) - Request models - Response models - Error response models - Package name sesuai dengan nama handler ### Routes Update - Otomatis menambahkan routes ke `/api/v1/` - 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