Create response.go
This commit is contained in:
parent
c83453f363
commit
aefef66d78
59
response.go
Normal file
59
response.go
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
// This package parse a http request from datatables (jQuery plugin) to a friendly structure
|
||||||
|
// More details in https://github.com/saulortega/datatables
|
||||||
|
// import "github.com/saulortega/datatables"
|
||||||
|
|
||||||
|
package datatables
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Response struct {
|
||||||
|
Draw int `json:"draw"`
|
||||||
|
RecordsTotal int `json:"recordsTotal"`
|
||||||
|
RecordsFiltered int `json:"recordsFiltered"`
|
||||||
|
Data interface{} `json:"data"`
|
||||||
|
Error error `json:"error,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *Response) Check() error {
|
||||||
|
var err error
|
||||||
|
|
||||||
|
if r.Data == nil || r.RecordsFiltered == 0 {
|
||||||
|
r.Data = []string{} //Vacío, no nulo
|
||||||
|
}
|
||||||
|
|
||||||
|
if r.RecordsFiltered > r.RecordsTotal {
|
||||||
|
err = errors.New("wrong filtered or total records")
|
||||||
|
}
|
||||||
|
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *Response) WriteResponseOnSuccess(w http.ResponseWriter) error {
|
||||||
|
err := r.Check()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
RJSON, err := json.Marshal(r)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
w.WriteHeader(http.StatusOK)
|
||||||
|
w.Write(RJSON)
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *Response) WriteResponse(w http.ResponseWriter) error {
|
||||||
|
err := r.WriteResponseOnSuccess(w)
|
||||||
|
if err != nil {
|
||||||
|
w.WriteHeader(http.StatusInternalServerError)
|
||||||
|
}
|
||||||
|
|
||||||
|
return err
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user