Pulse/internal/utils/helpers.go
2025-10-11 23:29:47 +00:00

45 lines
1.2 KiB
Go

package utils
import (
"encoding/json"
"fmt"
"net/http"
"time"
)
// Float64Ptr returns a pointer to the given float64 value
func Float64Ptr(v float64) *float64 {
return &v
}
// GenerateID generates a unique ID with the given prefix
func GenerateID(prefix string) string {
return fmt.Sprintf("%s-%d", prefix, time.Now().UnixNano())
}
// WriteJSONResponse writes a JSON response to the http.ResponseWriter
func WriteJSONResponse(w http.ResponseWriter, data interface{}) error {
w.Header().Set("Content-Type", "application/json")
// Use Marshal instead of Encoder for better performance with large payloads
jsonData, err := json.Marshal(data)
if err != nil {
return err
}
_, err = w.Write(jsonData)
return err
}
// WriteJSONError writes a JSON error response to the http.ResponseWriter
func WriteJSONError(w http.ResponseWriter, message string, code int) {
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(code)
_ = json.NewEncoder(w).Encode(map[string]string{"error": message})
}
// DecodeJSONBody decodes a JSON request body into the given interface
func DecodeJSONBody(r *http.Request, v interface{}) error {
if err := json.NewDecoder(r.Body).Decode(v); err != nil {
return err
}
return nil
}