package handlers import ( "net/http" "github.com/gin-gonic/gin" "veza-backend-api/internal/types" "veza-backend-api/internal/models" ) // {{HANDLER_NAME}}Handlers handles HTTP requests for {{DOMAIN}} type {{HANDLER_NAME}}Handlers struct { {{SERVICE_LOWER}}Service types.{{SERVICE_INTERFACE}} } // New{{HANDLER_NAME}}Handlers creates a new {{HANDLER_NAME}}Handlers instance func New{{HANDLER_NAME}}Handlers( {{SERVICE_LOWER}}Service types.{{SERVICE_INTERFACE}}, ) *{{HANDLER_NAME}}Handlers { return &{{HANDLER_NAME}}Handlers{ {{SERVICE_LOWER}}Service: {{SERVICE_LOWER}}Service, } } // Create{{ENTITY}} handles POST /api/v1/{{RESOURCE_PATH}} func (h *{{HANDLER_NAME}}Handlers) Create{{ENTITY}}(c *gin.Context) { var req Create{{ENTITY}}Request if err := c.ShouldBindJSON(&req); err != nil { c.JSON(http.StatusBadRequest, gin.H{ "error": "invalid request", "details": err.Error(), }) return } {{ENTITY_LOWER}}, err := h.{{SERVICE_LOWER}}Service.Create{{ENTITY}}(c.Request.Context(), &req) if err != nil { handleError(c, err) return } c.JSON(http.StatusCreated, gin.H{ "data": {{ENTITY_LOWER}}, }) } // Get{{ENTITY}} handles GET /api/v1/{{RESOURCE_PATH}}/:id func (h *{{HANDLER_NAME}}Handlers) Get{{ENTITY}}(c *gin.Context) { idParam := c.Param("id") id, err := uuid.Parse(idParam) if err != nil { c.JSON(http.StatusBadRequest, gin.H{ "error": "invalid id format", }) return } {{ENTITY_LOWER}}, err := h.{{SERVICE_LOWER}}Service.Get{{ENTITY}}ByID(c.Request.Context(), id) if err != nil { handleError(c, err) return } c.JSON(http.StatusOK, gin.H{ "data": {{ENTITY_LOWER}}, }) } // handleError handles errors in a consistent way func handleError(c *gin.Context, err error) { // TODO: Implement error handling logic // Check error type and return appropriate status code c.JSON(http.StatusInternalServerError, gin.H{ "error": "internal server error", }) } // Create{{ENTITY}}Request represents the request body for creating a {{ENTITY}} type Create{{ENTITY}}Request struct { // TODO: Add request fields with JSON tags }