@@ -14,11 +14,11 @@ import (
14
14
)
15
15
16
16
type postService interface {
17
- Create (post * models.Post )
18
- GetPosts (posts * []models.Post )
19
- GetPost (post * models.Post , id int )
20
- Update (post * models.Post , updatePostRequest * requests.UpdatePostRequest )
21
- Delete (post * models.Post )
17
+ Create (post * models.Post ) error
18
+ GetPosts () ( []models.Post , error )
19
+ GetPost (id int ) ( models.Post , error )
20
+ Update (post * models.Post , updatePostRequest requests.UpdatePostRequest ) error
21
+ Delete (post * models.Post ) error
22
22
}
23
23
24
24
type PostHandlers struct {
@@ -42,11 +42,10 @@ func NewPostHandlers(postService postService) PostHandlers {
42
42
// @Failure 400 {object} responses.Error
43
43
// @Security ApiKeyAuth
44
44
// @Router /posts [post]
45
- func (p PostHandlers ) CreatePost (c echo.Context ) error {
46
- createPostRequest := new (requests.CreatePostRequest )
47
-
48
- if err := c .Bind (createPostRequest ); err != nil {
49
- return err
45
+ func (p * PostHandlers ) CreatePost (c echo.Context ) error {
46
+ var createPostRequest requests.CreatePostRequest
47
+ if err := c .Bind (& createPostRequest ); err != nil {
48
+ return responses .ErrorResponse (c , http .StatusBadRequest , "Failed to bind request: " + err .Error ())
50
49
}
51
50
52
51
if err := createPostRequest .Validate (); err != nil {
@@ -63,7 +62,9 @@ func (p PostHandlers) CreatePost(c echo.Context) error {
63
62
UserID : id ,
64
63
}
65
64
66
- p .postService .Create (& post )
65
+ if err := p .postService .Create (& post ); err != nil {
66
+ return responses .ErrorResponse (c , http .StatusBadRequest , "Failed to create post: " + err .Error ())
67
+ }
67
68
68
69
return responses .MessageResponse (c , http .StatusCreated , "Post successfully created" )
69
70
}
@@ -79,19 +80,20 @@ func (p PostHandlers) CreatePost(c echo.Context) error {
79
80
// @Failure 404 {object} responses.Error
80
81
// @Security ApiKeyAuth
81
82
// @Router /posts/{id} [delete]
82
- func (p PostHandlers ) DeletePost (c echo.Context ) error {
83
- id , _ := strconv .Atoi (c .Param ("id" ))
84
-
85
- post := new (models.Post )
86
-
87
- p .postService .GetPost (post , id )
83
+ func (p * PostHandlers ) DeletePost (c echo.Context ) error {
84
+ id , err := strconv .Atoi (c .Param ("id" ))
85
+ if err != nil {
86
+ return responses .ErrorResponse (c , http .StatusBadRequest , "Failed to parse post id: " + err .Error ())
87
+ }
88
88
89
- post , err := postRepository .GetPost (id )
89
+ post , err := p . postService .GetPost (id )
90
90
if err != nil {
91
91
return responses .ErrorResponse (c , http .StatusNotFound , "Post not found" )
92
92
}
93
93
94
- p .postService .Delete (post )
94
+ if err := p .postService .Delete (& post ); err != nil {
95
+ return responses .ErrorResponse (c , http .StatusInternalServerError , "Failed to delete post: " + err .Error ())
96
+ }
95
97
96
98
return responses .MessageResponse (c , http .StatusNoContent , "Post deleted successfully" )
97
99
}
@@ -106,10 +108,11 @@ func (p PostHandlers) DeletePost(c echo.Context) error {
106
108
// @Success 200 {array} responses.PostResponse
107
109
// @Security ApiKeyAuth
108
110
// @Router /posts [get]
109
- func (p PostHandlers ) GetPosts (c echo.Context ) error {
110
- var posts []models.Post
111
-
112
- p .postService .GetPosts (& posts )
111
+ func (p * PostHandlers ) GetPosts (c echo.Context ) error {
112
+ posts , err := p .postService .GetPosts ()
113
+ if err != nil {
114
+ return responses .ErrorResponse (c , http .StatusNotFound , "Failed to get all posts: " + err .Error ())
115
+ }
113
116
114
117
response := responses .NewPostResponse (posts )
115
118
return responses .Response (c , http .StatusOK , response )
@@ -130,9 +133,11 @@ func (p PostHandlers) GetPosts(c echo.Context) error {
130
133
// @Failure 404 {object} responses.Error
131
134
// @Security ApiKeyAuth
132
135
// @Router /posts/{id} [put]
133
- func (p PostHandlers ) UpdatePost (c echo.Context ) error {
134
- updatePostRequest := new (requests.UpdatePostRequest )
135
- id , _ := strconv .Atoi (c .Param ("id" ))
136
+ func (p * PostHandlers ) UpdatePost (c echo.Context ) error {
137
+ id , err := strconv .Atoi (c .Param ("id" ))
138
+ if err != nil {
139
+ return responses .ErrorResponse (c , http .StatusBadRequest , "Failed to parse post id: " + err .Error ())
140
+ }
136
141
137
142
var updatePostRequest requests.UpdatePostRequest
138
143
if err := c .Bind (& updatePostRequest ); err != nil {
@@ -143,16 +148,14 @@ func (p PostHandlers) UpdatePost(c echo.Context) error {
143
148
return responses .ErrorResponse (c , http .StatusBadRequest , "Required fields are empty" )
144
149
}
145
150
146
- post := models.Post {}
147
-
148
- p .postService .GetPost (& post , id )
149
-
150
- post , err := postRepository .GetPost (id )
151
+ post , err := p .postService .GetPost (id )
151
152
if err != nil {
152
153
return responses .ErrorResponse (c , http .StatusNotFound , "Post not found" )
153
154
}
154
155
155
- p .postService .Update (& post , updatePostRequest )
156
+ if err := p .postService .Update (& post , updatePostRequest ); err != nil {
157
+ return responses .ErrorResponse (c , http .StatusInternalServerError , "Failed to update post: " + err .Error ())
158
+ }
156
159
157
160
return responses .MessageResponse (c , http .StatusOK , "Post successfully updated" )
158
161
}
0 commit comments