Skip to content
This repository was archived by the owner on Dec 5, 2023. It is now read-only.

Commit efca396

Browse files
Merge pull request #13 from microservices-demo/changesingleresponse
Changesingleresponse
2 parents 62d622e + 5311154 commit efca396

File tree

19 files changed

+665
-381
lines changed

19 files changed

+665
-381
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
bin
2+
docker/user/bin

Makefile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,10 @@ docker: build
5151
cp -rf bin docker/user/
5252
docker build -t $(NAME) -f docker/user/Dockerfile-release docker/user/
5353

54+
dockerlocal: build
55+
cp -rf bin docker/user/
56+
docker build -t $(INSTANCE)-local -f docker/user/Dockerfile-release docker/user/
57+
5458
dockertravisbuild: build
5559
cp -rf bin docker/user/
5660
docker build -t $(NAME):$(TAG) -f docker/user/Dockerfile-release docker/user/

api/endpoints.go

Lines changed: 82 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"time"
99

1010
"github.com/go-kit/kit/endpoint"
11+
"github.com/microservices-demo/user/db"
1112
"github.com/microservices-demo/user/users"
1213
"golang.org/x/net/context"
1314
)
@@ -22,6 +23,7 @@ type Endpoints struct {
2223
AddressPostEndpoint endpoint.Endpoint
2324
CardGetEndpoint endpoint.Endpoint
2425
CardPostEndpoint endpoint.Endpoint
26+
DeleteEndpoint endpoint.Endpoint
2527
HealthEndpoint endpoint.Endpoint
2628
}
2729

@@ -37,6 +39,7 @@ func MakeEndpoints(s Service) Endpoints {
3739
AddressGetEndpoint: MakeAddressGetEndpoint(s),
3840
AddressPostEndpoint: MakeAddressPostEndpoint(s),
3941
CardGetEndpoint: MakeCardGetEndpoint(s),
42+
DeleteEndpoint: MakeDeleteEndpoint(s),
4043
CardPostEndpoint: MakeCardPostEndpoint(s),
4144
}
4245
}
@@ -54,26 +57,46 @@ func MakeLoginEndpoint(s Service) endpoint.Endpoint {
5457
func MakeRegisterEndpoint(s Service) endpoint.Endpoint {
5558
return func(ctx context.Context, request interface{}) (response interface{}, err error) {
5659
req := request.(registerRequest)
57-
status := s.Register(req.Username, req.Password, req.Email)
58-
return statusResponse{Status: status}, err
60+
id, err := s.Register(req.Username, req.Password, req.Email)
61+
return postResponse{ID: id}, err
5962
}
6063
}
6164

6265
// MakeUserGetEndpoint returns an endpoint via the given service.
6366
func MakeUserGetEndpoint(s Service) endpoint.Endpoint {
6467
return func(ctx context.Context, request interface{}) (response interface{}, err error) {
6568
req := request.(GetRequest)
66-
users, err := s.GetUsers(req.ID)
67-
return usersResponse{Users: users}, err
69+
usrs, err := s.GetUsers(req.ID)
70+
if req.ID == "" {
71+
return EmbedStruct{usersResponse{Users: usrs}}, err
72+
}
73+
if len(usrs) == 0 {
74+
if req.Attr == "addresses" {
75+
return EmbedStruct{addressesResponse{Addresses: make([]users.Address, 0)}}, err
76+
}
77+
if req.Attr == "cards" {
78+
return EmbedStruct{cardsResponse{Cards: make([]users.Card, 0)}}, err
79+
}
80+
return users.User{}, err
81+
}
82+
user := usrs[0]
83+
db.GetUserAttributes(&user)
84+
if req.Attr == "addresses" {
85+
return EmbedStruct{addressesResponse{Addresses: user.Addresses}}, err
86+
}
87+
if req.Attr == "cards" {
88+
return EmbedStruct{cardsResponse{Cards: user.Cards}}, err
89+
}
90+
return user, err
6891
}
6992
}
7093

7194
// MakeUserPostEndpoint returns an endpoint via the given service.
7295
func MakeUserPostEndpoint(s Service) endpoint.Endpoint {
7396
return func(ctx context.Context, request interface{}) (response interface{}, err error) {
74-
req := request.(userPostRequest)
75-
status := s.PostUser(req.User)
76-
return statusResponse{Status: status}, err
97+
req := request.(users.User)
98+
id, err := s.PostUser(req)
99+
return postResponse{ID: id}, err
77100
}
78101
}
79102

@@ -82,16 +105,22 @@ func MakeAddressGetEndpoint(s Service) endpoint.Endpoint {
82105
return func(ctx context.Context, request interface{}) (response interface{}, err error) {
83106
req := request.(GetRequest)
84107
adds, err := s.GetAddresses(req.ID)
85-
return addressesResponse{Addresses: adds}, err
108+
if req.ID == "" {
109+
return EmbedStruct{addressesResponse{Addresses: adds}}, err
110+
}
111+
if len(adds) == 0 {
112+
return users.Address{}, err
113+
}
114+
return adds[0], err
86115
}
87116
}
88117

89118
// MakeAddressPostEndpoint returns an endpoint via the given service.
90119
func MakeAddressPostEndpoint(s Service) endpoint.Endpoint {
91120
return func(ctx context.Context, request interface{}) (response interface{}, err error) {
92121
req := request.(addressPostRequest)
93-
status := s.PostAddress(req.Address, req.UserID)
94-
return statusResponse{Status: status}, err
122+
id, err := s.PostAddress(req.Address, req.UserID)
123+
return postResponse{ID: id}, err
95124
}
96125
}
97126

@@ -100,16 +129,34 @@ func MakeCardGetEndpoint(s Service) endpoint.Endpoint {
100129
return func(ctx context.Context, request interface{}) (response interface{}, err error) {
101130
req := request.(GetRequest)
102131
cards, err := s.GetCards(req.ID)
103-
return cardsResponse{Cards: cards}, err
132+
if req.ID == "" {
133+
return EmbedStruct{cardsResponse{Cards: cards}}, err
134+
}
135+
if len(cards) == 0 {
136+
return users.Card{}, err
137+
}
138+
return cards[0], err
104139
}
105140
}
106141

107142
// MakeCardPostEndpoint returns an endpoint via the given service.
108143
func MakeCardPostEndpoint(s Service) endpoint.Endpoint {
109144
return func(ctx context.Context, request interface{}) (response interface{}, err error) {
110145
req := request.(cardPostRequest)
111-
status := s.PostCard(req.Card, req.UserID)
112-
return statusResponse{Status: status}, err
146+
id, err := s.PostCard(req.Card, req.UserID)
147+
return postResponse{ID: id}, err
148+
}
149+
}
150+
151+
// MakeLoginEndpoint returns an endpoint via the given service.
152+
func MakeDeleteEndpoint(s Service) endpoint.Endpoint {
153+
return func(ctx context.Context, request interface{}) (response interface{}, err error) {
154+
req := request.(deleteRequest)
155+
err = s.Delete(req.Entity, req.ID)
156+
if err == nil {
157+
return statusResponse{Status: true}, err
158+
}
159+
return statusResponse{Status: false}, err
113160
}
114161
}
115162

@@ -121,18 +168,15 @@ func MakeHealthEndpoint(s Service) endpoint.Endpoint {
121168
}
122169

123170
type GetRequest struct {
124-
ID string
171+
ID string
172+
Attr string
125173
}
126174

127175
type loginRequest struct {
128176
Username string
129177
Password string
130178
}
131179

132-
type userPostRequest struct {
133-
User users.User `json:"user"`
134-
}
135-
136180
type userResponse struct {
137181
User users.User `json:"user"`
138182
}
@@ -142,33 +186,42 @@ type usersResponse struct {
142186
}
143187

144188
type addressPostRequest struct {
145-
Address users.Address `json:"address"`
146-
UserID string `json:"userID"`
189+
users.Address
190+
UserID string `json:"userID"`
147191
}
148192

149193
type addressesResponse struct {
150194
Addresses []users.Address `json:"address"`
151195
}
152196

153197
type cardPostRequest struct {
154-
Card users.Card `json:"card"`
155-
UserID string `json:"userID"`
198+
users.Card
199+
UserID string `json:"userID"`
156200
}
157201

158202
type cardsResponse struct {
159203
Cards []users.Card `json:"card"`
160204
}
161205

162206
type registerRequest struct {
163-
Username string
164-
Password string
165-
Email string
207+
Username string `json:"username"`
208+
Password string `json:"password"`
209+
Email string `json:"email"`
166210
}
167211

168212
type statusResponse struct {
169213
Status bool `json:"status"`
170214
}
171215

216+
type postResponse struct {
217+
ID string `json:"id"`
218+
}
219+
220+
type deleteRequest struct {
221+
Entity string
222+
ID string
223+
}
224+
172225
type healthRequest struct {
173226
//
174227
}
@@ -177,3 +230,7 @@ type healthResponse struct {
177230
Status string `json:"status"`
178231
Time string `json:"time"`
179232
}
233+
234+
type EmbedStruct struct {
235+
Embed interface{} `json:"_embedded"`
236+
}

api/endpoints_test.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,12 @@ import "testing"
66

77
func TestMakeEndpoints(t *testing.T) {
88
// eps := MakeEndpoints(TestService)
9-
// spew.Dump(TestService)
109
}
1110

1211
func TestMakeLoginEndpoint(t *testing.T) {
1312
// l := MakeLoginEndpoint(TestService)
14-
// spew.Dump(TestService)
1513
}
1614

1715
func TestMakeRegisterEndpoint(t *testing.T) {
1816
// r := MakeRegisterEndpoint(TestService)
19-
// spew.Dump(TestService)
2017
}

api/middlewares.go

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,34 +29,31 @@ func (mw loggingMiddleware) Login(username, password string) (user users.User, e
2929
defer func(begin time.Time) {
3030
mw.logger.Log(
3131
"method", "Login",
32-
"username", username,
33-
"result", user.UserID,
3432
"took", time.Since(begin),
3533
)
3634
}(time.Now())
3735
return mw.next.Login(username, password)
3836
}
3937

40-
func (mw loggingMiddleware) Register(username, password, email string) (status bool) {
38+
func (mw loggingMiddleware) Register(username, password, email string) (string, error) {
4139
defer func(begin time.Time) {
4240
mw.logger.Log(
4341
"method", "Register",
4442
"username", username,
4543
"email", email,
46-
"result", status,
4744
"took", time.Since(begin),
4845
)
4946
}(time.Now())
5047
return mw.next.Register(username, password, email)
5148
}
5249

53-
func (mw loggingMiddleware) PostUser(user users.User) (status bool) {
50+
func (mw loggingMiddleware) PostUser(user users.User) (id string, err error) {
5451
defer func(begin time.Time) {
5552
mw.logger.Log(
5653
"method", "PostUser",
5754
"username", user.Username,
5855
"email", user.Email,
59-
"result", status,
56+
"result", id,
6057
"took", time.Since(begin),
6158
)
6259
}(time.Now())
@@ -79,14 +76,13 @@ func (mw loggingMiddleware) GetUsers(id string) (u []users.User, err error) {
7976
return mw.next.GetUsers(id)
8077
}
8178

82-
func (mw loggingMiddleware) PostAddress(add users.Address, id string) (status bool) {
79+
func (mw loggingMiddleware) PostAddress(add users.Address, id string) (string, error) {
8380
defer func(begin time.Time) {
8481
mw.logger.Log(
8582
"method", "PostAddress",
8683
"street", add.Street,
8784
"number", add.Number,
8885
"user", id,
89-
"result", status,
9086
"took", time.Since(begin),
9187
)
9288
}(time.Now())
@@ -109,15 +105,14 @@ func (mw loggingMiddleware) GetAddresses(id string) (a []users.Address, err erro
109105
return mw.next.GetAddresses(id)
110106
}
111107

112-
func (mw loggingMiddleware) PostCard(card users.Card, id string) (status bool) {
108+
func (mw loggingMiddleware) PostCard(card users.Card, id string) (string, error) {
113109
defer func(begin time.Time) {
114110
cc := card
115111
cc.MaskCC()
116112
mw.logger.Log(
117113
"method", "PostCard",
118114
"card", cc.LongNum,
119115
"user", id,
120-
"result", status,
121116
"took", time.Since(begin),
122117
)
123118
}(time.Now())
@@ -139,3 +134,15 @@ func (mw loggingMiddleware) GetCards(id string) (a []users.Card, err error) {
139134
}(time.Now())
140135
return mw.next.GetCards(id)
141136
}
137+
138+
func (mw loggingMiddleware) Delete(entity, id string) (err error) {
139+
defer func(begin time.Time) {
140+
mw.logger.Log(
141+
"method", "Delete",
142+
"entity", entity,
143+
"id", id,
144+
"took", time.Since(begin),
145+
)
146+
}(time.Now())
147+
return mw.next.Delete(entity, id)
148+
}

0 commit comments

Comments
 (0)