Skip to content

Commit 66a2765

Browse files
refactor: fix merge conflicts
1 parent 8bb8783 commit 66a2765

File tree

3 files changed

+57
-40
lines changed

3 files changed

+57
-40
lines changed

internal/server/handlers/post_handler.go

Lines changed: 35 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ import (
1414
)
1515

1616
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
2222
}
2323

2424
type PostHandlers struct {
@@ -42,11 +42,10 @@ func NewPostHandlers(postService postService) PostHandlers {
4242
// @Failure 400 {object} responses.Error
4343
// @Security ApiKeyAuth
4444
// @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())
5049
}
5150

5251
if err := createPostRequest.Validate(); err != nil {
@@ -63,7 +62,9 @@ func (p PostHandlers) CreatePost(c echo.Context) error {
6362
UserID: id,
6463
}
6564

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+
}
6768

6869
return responses.MessageResponse(c, http.StatusCreated, "Post successfully created")
6970
}
@@ -79,19 +80,20 @@ func (p PostHandlers) CreatePost(c echo.Context) error {
7980
// @Failure 404 {object} responses.Error
8081
// @Security ApiKeyAuth
8182
// @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+
}
8888

89-
post, err := postRepository.GetPost(id)
89+
post, err := p.postService.GetPost(id)
9090
if err != nil {
9191
return responses.ErrorResponse(c, http.StatusNotFound, "Post not found")
9292
}
9393

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+
}
9597

9698
return responses.MessageResponse(c, http.StatusNoContent, "Post deleted successfully")
9799
}
@@ -106,10 +108,11 @@ func (p PostHandlers) DeletePost(c echo.Context) error {
106108
// @Success 200 {array} responses.PostResponse
107109
// @Security ApiKeyAuth
108110
// @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+
}
113116

114117
response := responses.NewPostResponse(posts)
115118
return responses.Response(c, http.StatusOK, response)
@@ -130,9 +133,11 @@ func (p PostHandlers) GetPosts(c echo.Context) error {
130133
// @Failure 404 {object} responses.Error
131134
// @Security ApiKeyAuth
132135
// @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+
}
136141

137142
var updatePostRequest requests.UpdatePostRequest
138143
if err := c.Bind(&updatePostRequest); err != nil {
@@ -143,16 +148,14 @@ func (p PostHandlers) UpdatePost(c echo.Context) error {
143148
return responses.ErrorResponse(c, http.StatusBadRequest, "Required fields are empty")
144149
}
145150

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)
151152
if err != nil {
152153
return responses.ErrorResponse(c, http.StatusNotFound, "Post not found")
153154
}
154155

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+
}
156159

157160
return responses.MessageResponse(c, http.StatusOK, "Post successfully updated")
158161
}

internal/services/post/service.go

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,22 @@ func (s Service) Create(post *models.Post) error {
3131
return nil
3232
}
3333

34-
func (s Service) GetPosts(posts *[]models.Post) {
35-
s.postRepository.GetPosts()
34+
func (s Service) GetPosts() ([]models.Post, error) {
35+
posts, err := s.postRepository.GetPosts()
36+
if err != nil {
37+
return nil, fmt.Errorf("get posts from repository: %w", err)
38+
}
39+
40+
return posts, nil
3641
}
3742

38-
func (s Service) GetPost(post *models.Post, id int) {
39-
s.postRepository.GetPost(id)
43+
func (s Service) GetPost(id int) (models.Post, error) {
44+
post, err := s.postRepository.GetPost(id)
45+
if err != nil {
46+
return models.Post{}, fmt.Errorf("get post from repository: %w", err)
47+
}
48+
49+
return post, nil
4050
}
4151

4252
func (s Service) Update(post *models.Post, updatePostRequest requests.UpdatePostRequest) error {

tests/post_test.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,26 +55,30 @@ func TestWalkPostsCrud(t *testing.T) {
5555
handlerFuncCreate := func(s *server.Server, c echo.Context) error {
5656
postRepository := repositories.NewPostRepository(s.DB)
5757
postService := post.NewPostService(postRepository)
58+
handler := handlers.NewPostHandlers(postService)
5859

59-
return handlers.NewPostHandlers(postService).CreatePost(c)
60+
return handler.CreatePost(c)
6061
}
6162
handlerFuncGet := func(s *server.Server, c echo.Context) error {
6263
postRepository := repositories.NewPostRepository(s.DB)
6364
postService := post.NewPostService(postRepository)
65+
handler := handlers.NewPostHandlers(postService)
6466

65-
return handlers.NewPostHandlers(postService).GetPosts(c)
67+
return handler.GetPosts(c)
6668
}
6769
handlerFuncUpdate := func(s *server.Server, c echo.Context) error {
6870
postRepository := repositories.NewPostRepository(s.DB)
6971
postService := post.NewPostService(postRepository)
72+
handler := handlers.NewPostHandlers(postService)
7073

71-
return handlers.NewPostHandlers(postService).UpdatePost(c)
74+
return handler.UpdatePost(c)
7275
}
7376
handlerFuncDelete := func(s *server.Server, c echo.Context) error {
7477
postRepository := repositories.NewPostRepository(s.DB)
7578
postService := post.NewPostService(postRepository)
79+
handler := handlers.NewPostHandlers(postService)
7680

77-
return handlers.NewPostHandlers(postService).DeletePost(c)
81+
return handler.DeletePost(c)
7882
}
7983

8084
claims := &token.JwtCustomClaims{

0 commit comments

Comments
 (0)