44 lines
1.2 KiB
Go
44 lines
1.2 KiB
Go
// Package handlers provides HTTP request handlers for the API.
|
|
package handlers
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
// Response is the standard JSON response format for all API endpoints.
|
|
type Response struct {
|
|
Data interface{} `json:"data"`
|
|
Error string `json:"error,omitempty"`
|
|
Meta *Meta `json:"meta,omitempty"`
|
|
}
|
|
|
|
// Meta contains pagination information for list endpoints.
|
|
type Meta struct {
|
|
Total int `json:"total,omitempty"`
|
|
Page int `json:"page,omitempty"`
|
|
}
|
|
|
|
// JSON sends a response with the given status code and data.
|
|
func JSON(c *gin.Context, status int, data interface{}) {
|
|
c.JSON(status, Response{Data: data})
|
|
}
|
|
|
|
// Error sends an error response with the given status code and message.
|
|
func Error(c *gin.Context, status int, message string) {
|
|
c.JSON(status, Response{Error: message})
|
|
}
|
|
|
|
// Success sends a 200 OK response with the given data.
|
|
func Success(c *gin.Context, data interface{}) {
|
|
JSON(c, 200, data)
|
|
}
|
|
|
|
// Created sends a 201 Created response with the given data.
|
|
func Created(c *gin.Context, data interface{}) {
|
|
JSON(c, 201, data)
|
|
}
|
|
|
|
// NoContent sends a 204 No Content response.
|
|
func NoContent(c *gin.Context) {
|
|
c.Status(204)
|
|
}
|