perbaikan

This commit is contained in:
2025-08-16 05:01:39 +07:00
parent c14587996e
commit ac15da3ed3
4 changed files with 89 additions and 80 deletions

View File

@@ -107,8 +107,7 @@ func generateHandlerFile(data HandlerData, handlerDir string) {
import (
"net/http"
"api-service/internal/models/%s"
"api-service/internal/models"
"github.com/gin-gonic/gin"
"github.com/google/uuid"
)
@@ -119,23 +118,24 @@ type %sHandler struct{}
// New%sHandler creates a new %sHandler
func New%sHandler() *%sHandler {
return &%sHandler{}
}`, data.NameLower, data.Name, data.NameLower, data.Name, data.Name, data.Name, data.Name, data.Name)
}`, data.Name, data.NameLower, data.Name, data.Name, data.Name, data.Name, data.Name)
// Add methods based on requested operations
var methodsContent string
if data.HasGet {
methodsContent += fmt.Sprintf(`
// Get%s godoc
// @Summary Get %s
// @Description Returns a list of %s
// @Tags %s
// @Accept json
// @Produce json
// @Success 200 {object} %s.%sGetResponse "%s GET response"
// @Success 200 {object} models.%sGetResponse "%s GET response"
// @Router /api/v1/%s [get]
func (h *%sHandler) Get%s(c *gin.Context) {
response := %s.%sGetResponse{
response := models.%sGetResponse{
Message: "List of %s",
Data: []string{"%s 1", "%s 2"},
}
@@ -149,45 +149,46 @@ func (h *%sHandler) Get%s(c *gin.Context) {
// @Accept json
// @Produce json
// @Param id path string true "%s ID"
// @Success 200 {object} %s.%sGetByIDResponse "%s GET by ID response"
// @Failure 404 {object} %s.ErrorResponse "%s not found"
// @Success 200 {object} models.%sGetByIDResponse "%s GET by ID response"
// @Failure 404 {object} models.ErrorResponse "%s not found"
// @Router /api/v1/%s/{id} [get]
func (h *%sHandler) Get%sByID(c *gin.Context) {
id := c.Param("id")
response := %s.%sGetByIDResponse{
response := models.%sGetByIDResponse{
ID: id,
Message: "%s details",
}
c.JSON(http.StatusOK, response)
}`,
data.Name, data.NameLower, data.NamePlural, data.NameLower,
data.NameLower, data.Name, data.Name, data.NamePlural,
data.Name, data.Name, data.NameLower, data.Name, data.Name, data.Name,
data.Name, data.Name, data.NamePlural,
data.Name, data.Name, data.Name, data.NamePlural, data.Name, data.Name,
data.Name, data.NameLower, data.NameLower, data.NameLower,
data.Name, data.NameLower, data.Name, data.Name, data.NameLower,
data.Name, data.Name, data.NameLower, data.Name, data.NameLower, data.Name)
data.Name, data.Name, data.Name, data.NameLower, data.Name,
data.Name, data.Name, data.Name, data.NameLower, data.Name)
}
if data.HasPost {
methodsContent += fmt.Sprintf(`
// Create%s godoc
// @Summary Create %s
// @Description Creates a new %s
// @Tags %s
// @Accept json
// @Produce json
// @Param request body %s.%sCreateRequest true "%s creation request"
// @Success 201 {object} %s.%sCreateResponse "%s created successfully"
// @Failure 400 {object} %s.ErrorResponse "Bad request"
// @Param request body models.%sCreateRequest true "%s creation request"
// @Success 201 {object} models.%sCreateResponse "%s created successfully"
// @Failure 400 {object} models.ErrorResponse "Bad request"
// @Router /api/v1/%s [post]
func (h *%sHandler) Create%s(c *gin.Context) {
var req %s.%sCreateRequest
var req models.%sCreateRequest
if err := c.ShouldBindJSON(&req); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
response := %s.%sCreateResponse{
response := models.%sCreateResponse{
ID: uuid.NewString(),
Message: "%s created successfully",
Data: req,
@@ -195,13 +196,13 @@ func (h *%sHandler) Create%s(c *gin.Context) {
c.JSON(http.StatusCreated, response)
}`,
data.Name, data.NameLower, data.NameLower, data.NameLower,
data.NameLower, data.Name, data.Name, data.NameLower, data.Name,
data.Name, data.NameLower, data.Name, data.Name, data.NameLower,
data.Name, data.Name)
data.Name, data.Name, data.Name, data.Name, data.NamePlural,
data.Name, data.Name, data.Name, data.Name, data.Name)
}
if data.HasPut {
methodsContent += fmt.Sprintf(`
// Update%s godoc
// @Summary Update %s
// @Description Updates an existing %s
@@ -209,20 +210,20 @@ func (h *%sHandler) Create%s(c *gin.Context) {
// @Accept json
// @Produce json
// @Param id path string true "%s ID"
// @Param request body %s.%sUpdateRequest true "%s update request"
// @Success 200 {object} %s.%sUpdateResponse "%s updated successfully"
// @Failure 400 {object} %s.ErrorResponse "Bad request"
// @Failure 404 {object} %s.ErrorResponse "%s not found"
// @Param request body models.%sUpdateRequest true "%s update request"
// @Success 200 {object} models.%sUpdateResponse "%s updated successfully"
// @Failure 400 {object} models.ErrorResponse "Bad request"
// @Failure 404 {object} models.ErrorResponse "%s not found"
// @Router /api/v1/%s/{id} [put]
func (h *%sHandler) Update%s(c *gin.Context) {
id := c.Param("id")
var req %s.%sUpdateRequest
var req models.%sUpdateRequest
if err := c.ShouldBindJSON(&req); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
}
response := %s.%sUpdateResponse{
response := models.%sUpdateResponse{
ID: id,
Message: "%s updated successfully",
Data: req,
@@ -231,12 +232,13 @@ func (h *%sHandler) Update%s(c *gin.Context) {
}`,
data.Name, data.NameLower, data.NameLower, data.NameLower,
data.Name, data.NameLower, data.Name, data.Name, data.Name,
data.NameLower, data.Name, data.NameLower, data.Name, data.NameLower,
data.NameLower, data.Name, data.Name, data.Name, data.NameLower,
data.Name, data.Name, data.Name, data.Name)
}
if data.HasDelete {
methodsContent += fmt.Sprintf(`
// Delete%s godoc
// @Summary Delete %s
// @Description Deletes a %s by ID
@@ -244,12 +246,12 @@ func (h *%sHandler) Update%s(c *gin.Context) {
// @Accept json
// @Produce json
// @Param id path string true "%s ID"
// @Success 200 {object} %s.%sDeleteResponse "%s deleted successfully"
// @Failure 404 {object} %s.ErrorResponse "%s not found"
// @Success 200 {object} models.%sDeleteResponse "%s deleted successfully"
// @Failure 404 {object} models.ErrorResponse "%s not found"
// @Router /api/v1/%s/{id} [delete]
func (h *%sHandler) Delete%s(c *gin.Context) {
id := c.Param("id")
response := %s.%sDeleteResponse{
response := models.%sDeleteResponse{
ID: id,
Message: "%s deleted successfully",
}
@@ -257,7 +259,7 @@ func (h *%sHandler) Delete%s(c *gin.Context) {
}`,
data.Name, data.NameLower, data.NameLower, data.NameLower,
data.Name, data.NameLower, data.Name, data.Name, data.NameLower,
data.Name, data.Name, data.NameLower, data.Name, data.Name)
data.Name, data.Name, data.Name, data.Name)
}
fullContent := handlerContent + methodsContent
@@ -280,10 +282,11 @@ type %sGetByIDResponse struct {
ID string `+"`json:\"id\"`"+`
Message string `+"`json:\"message\"`"+`
}
`, data.Name, data.NamePlural, data.Name, data.Name, data.NameLower, data.Name, data.NameLower, data.Name)
`, data.Name, data.NamePlural, data.Name, data.Name, data.NameLower, data.Name)
}
if data.HasPost {
modelContent += fmt.Sprintf(`// %sCreateRequest represents the request for creating %s
type %sCreateRequest struct {
Name string `+"`json:\"name\" binding:\"required\"`"+`
// Add more fields as needed
@@ -295,7 +298,7 @@ type %sCreateResponse struct {
Message string `+"`json:\"message\"`"+`
Data interface{} `+"`json:\"data\"`"+`
}
`, data.Name, data.NameLower, data.Name, data.NameLower, data.Name, data.NameLower, data.Name)
`, data.Name, data.NameLower, data.Name, data.Name, data.NameLower, data.Name)
}
if data.HasPut {
@@ -311,7 +314,7 @@ type %sUpdateResponse struct {
Message string `+"`json:\"message\"`"+`
Data interface{} `+"`json:\"data\"`"+`
}
`, data.Name, data.NameLower, data.Name, data.NameLower, data.Name, data.NameLower, data.Name)
`, data.Name, data.NameLower, data.Name, data.Name, data.NameLower, data.Name)
}
if data.HasDelete {
@@ -320,7 +323,7 @@ type %sDeleteResponse struct {
ID string `+"`json:\"id\"`"+`
Message string `+"`json:\"message\"`"+`
}
`, data.Name, data.NameLower, data.Name, data.NameLower)
`, data.Name, data.NameLower, data.Name)
}
modelContent += `// ErrorResponse represents an error response