-
Notifications
You must be signed in to change notification settings - Fork 0
/
api.go
54 lines (44 loc) · 1.34 KB
/
api.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package clinics
import (
"net/http"
routing "github.com/go-ozzo/ozzo-routing/v2"
"github.com/qiangxue/go-rest-api/internal/errors"
"github.com/qiangxue/go-rest-api/pkg/log"
)
// RegisterHandlers sets up the routing of the HTTP handlers.
func RegisterHandlers(r *routing.RouteGroup, service Service, authHandler routing.Handler, logger log.Logger) {
res := resource{service, logger}
// To use the endpoints, the client must be authorized
r.Use(authHandler)
r.Post("/dentalClinics", res.queryDentalClinics)
r.Post("/vetClinics", res.queryVetClinics)
}
type resource struct {
service Service
logger log.Logger
}
func (r resource) queryDentalClinics(c *routing.Context) error {
var input ClinicSearchRequest
if err := c.Read(&input); err != nil {
r.logger.With(c.Request.Context()).Info(err)
return errors.BadRequest("")
}
dcs, err := r.service.QueryDentalClinics(c.Request.Context(), input)
if err != nil {
return err
}
return c.WriteWithStatus(dcs, http.StatusOK)
}
func (r resource) queryVetClinics(c *routing.Context) error {
ctx := c.Request.Context()
var input ClinicSearchRequest
if err := c.Read(&input); err != nil {
r.logger.With(c.Request.Context()).Info(err)
return errors.BadRequest("")
}
vcs, err := r.service.QueryVetClinics(ctx, input)
if err != nil {
return err
}
return c.WriteWithStatus(vcs, http.StatusOK)
}