164 lines
4.2 KiB
Cheetah
164 lines
4.2 KiB
Cheetah
// Code generated by genhandler; DO NOT EDIT.
|
|
|
|
package handlers
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
"time"
|
|
"{{.ModuleName}}/internal/models/reference"
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
/* ===== HANDLER STRUCT & CONSTRUCTOR ===== */
|
|
type {{.ServiceName}}Handler struct {
|
|
svc reference.{{.ServiceName}}Service
|
|
timeout time.Duration
|
|
}
|
|
|
|
func New{{.ServiceName}}Handler(svc reference.{{.ServiceName}}Service) *{{.ServiceName}}Handler {
|
|
return &{{.ServiceName}}Handler{
|
|
svc: svc,
|
|
timeout: time.Duration({{.Timeout}}) * time.Second,
|
|
}
|
|
}
|
|
|
|
/* ===== ENDPOINTS ===== */
|
|
{{range .Endpoints}}
|
|
{{/* ---------- GET ---------- */}}
|
|
{{if .HasGet}}
|
|
{{if $.HasSwagger}}
|
|
// @Summary {{.Summary}}
|
|
// @Description {{.Description}}
|
|
// @Tags {{ join .Tags "," }}
|
|
// @Accept json
|
|
// @Produce json
|
|
{{range .PathParams}}
|
|
// @Param {{.}} path string true "{{.}}"
|
|
{{end}}
|
|
{{if .RequireAuth}}
|
|
// @Security ApiKeyAuth
|
|
{{end}}
|
|
// @Success 200 {object} reference.{{.ResponseModel}}
|
|
// @Failure 400 {object} reference.ErrorResponse
|
|
// @Failure 500 {object} reference.ErrorResponse
|
|
// @Router {{.GetPath}} [get]
|
|
{{end}}
|
|
func (h *{{$.ServiceName}}Handler) Get{{.NameCamel}}(c *gin.Context) {
|
|
// ... (isi fungsi handler)
|
|
}
|
|
{{end}}
|
|
{{/* ---------- POST ---------- */}}
|
|
{{if .HasPost}}
|
|
{{if $.HasSwagger}}
|
|
// @Summary {{.Summary}}
|
|
// @Description {{.Description}}
|
|
// @Tags {{ join .Tags "," }}
|
|
// @Accept json
|
|
// @Produce json
|
|
{{if .RequireAuth}}
|
|
// @Security ApiKeyAuth
|
|
{{end}}
|
|
// @Param request body reference.{{.Model}} true "{{.Name}} data"
|
|
// @Success 201 {object} reference.{{.ResponseModel}}
|
|
// @Failure 400 {object} reference.ErrorResponse
|
|
// @Failure 500 {object} reference.ErrorResponse
|
|
// @Router {{.PostPath}} [post]
|
|
{{end}}
|
|
func (h *{{$.ServiceName}}Handler) Create{{.NameCamel}}(c *gin.Context) {
|
|
// ... (isi fungsi handler)
|
|
}
|
|
{{end}}
|
|
{{/* ---------- PUT ---------- */}}
|
|
{{if .HasPut}}
|
|
{{if $.HasSwagger}}
|
|
// @Summary Update {{.Name}}
|
|
// @Description {{.Description}}
|
|
// @Tags {{ join .Tags "," }}
|
|
// @Accept json
|
|
// @Produce json
|
|
{{range .PathParams}}
|
|
// @Param {{.}} path string true "{{.}}"
|
|
{{end}}
|
|
{{if .RequireAuth}}
|
|
// @Security ApiKeyAuth
|
|
{{end}}
|
|
// @Param request body reference.{{.Model}} true "{{.Name}} data"
|
|
// @Success 200 {object} reference.{{.ResponseModel}}
|
|
// @Failure 400 {object} reference.ErrorResponse
|
|
// @Failure 500 {object} reference.ErrorResponse
|
|
// @Router {{.PutPath}} [put]
|
|
{{end}}
|
|
func (h *{{$.ServiceName}}Handler) Update{{.NameCamel}}(c *gin.Context) {
|
|
// ... (isi fungsi handler)
|
|
}
|
|
{{end}}
|
|
{{/* ---------- PATCH ---------- */}}
|
|
{{if .HasPatch}}
|
|
{{if $.HasSwagger}}
|
|
// @Summary Patch {{.Name}}
|
|
// @Description {{.Description}}
|
|
// @Tags {{ join .Tags "," }}
|
|
// @Accept json
|
|
// @Produce json
|
|
{{range .PathParams}}
|
|
// @Param {{.}} path string true "{{.}}"
|
|
{{end}}
|
|
{{if .RequireAuth}}
|
|
// @Security ApiKeyAuth
|
|
{{end}}
|
|
// @Param request body reference.{{.Model}} true "Partial {{.Name}} data"
|
|
// @Success 200 {object} reference.{{.ResponseModel}}
|
|
// @Failure 400 {object} reference.ErrorResponse
|
|
// @Failure 500 {object} reference.ErrorResponse
|
|
// @Router {{.PatchPath}} [patch]
|
|
{{end}}
|
|
func (h *{{$.ServiceName}}Handler) Patch{{.NameCamel}}(c *gin.Context) {
|
|
// ... (isi fungsi handler)
|
|
}
|
|
{{end}}
|
|
{{/* ---------- DELETE ---------- */}}
|
|
{{if .HasDelete}}
|
|
{{if $.HasSwagger}}
|
|
// @Summary Delete {{.Name}}
|
|
// @Description {{.Description}}
|
|
// @Tags {{ join .Tags "," }}
|
|
// @Accept json
|
|
// @Produce json
|
|
{{range .PathParams}}
|
|
// @Param {{.}} path string true "{{.}}"
|
|
{{end}}
|
|
{{if .RequireAuth}}
|
|
// @Security ApiKeyAuth
|
|
{{end}}
|
|
// @Success 204 {object} nil
|
|
// @Failure 400 {object} reference.ErrorResponse
|
|
// @Failure 500 {object} reference.ErrorResponse
|
|
// @Router {{.DeletePath}} [delete]
|
|
{{end}}
|
|
func (h *{{$.ServiceName}}Handler) Delete{{.NameCamel}}(c *gin.Context) {
|
|
// ... (isi fungsi handler)
|
|
}
|
|
{{end}}
|
|
{{end}}
|
|
|
|
|
|
/* ===== HELPER FUNCTIONS ===== */
|
|
func getOrSetRequestID(c *gin.Context) string {
|
|
id := c.GetHeader("X-Request-ID")
|
|
if id == "" {
|
|
id = uuid.New().String()
|
|
c.Header("X-Request-ID", id)
|
|
}
|
|
return id
|
|
}
|
|
|
|
func errorJSON(c *gin.Context, code int, reqID string, err error) {
|
|
c.JSON(code, gin.H{
|
|
"status": "error",
|
|
"message": err.Error(),
|
|
"request_id": reqID,
|
|
})
|
|
}
|