@@ -5,23 +5,28 @@ import (
5
5
"strconv"
6
6
7
7
"github.com/nix-united/golang-echo-boilerplate/internal/models"
8
- "github.com/nix-united/golang-echo-boilerplate/internal/repositories"
9
8
"github.com/nix-united/golang-echo-boilerplate/internal/requests"
10
9
"github.com/nix-united/golang-echo-boilerplate/internal/responses"
11
- s "github.com/nix-united/golang-echo-boilerplate/internal/server"
12
- postservice "github.com/nix-united/golang-echo-boilerplate/internal/services/post"
13
10
"github.com/nix-united/golang-echo-boilerplate/internal/services/token"
14
11
15
12
"github.com/golang-jwt/jwt/v5"
16
13
"github.com/labstack/echo/v4"
17
14
)
18
15
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 )
22
+ }
23
+
19
24
type PostHandlers struct {
20
- server * s. Server
25
+ postService postService
21
26
}
22
27
23
- func NewPostHandlers (server * s. Server ) * PostHandlers {
24
- return & PostHandlers {server : server }
28
+ func NewPostHandlers (postService postService ) PostHandlers {
29
+ return PostHandlers {postService : postService }
25
30
}
26
31
27
32
// CreatePost godoc
@@ -37,7 +42,7 @@ func NewPostHandlers(server *s.Server) *PostHandlers {
37
42
// @Failure 400 {object} responses.Error
38
43
// @Security ApiKeyAuth
39
44
// @Router /posts [post]
40
- func (p * PostHandlers ) CreatePost (c echo.Context ) error {
45
+ func (p PostHandlers ) CreatePost (c echo.Context ) error {
41
46
createPostRequest := new (requests.CreatePostRequest )
42
47
43
48
if err := c .Bind (createPostRequest ); err != nil {
@@ -58,9 +63,7 @@ func (p *PostHandlers) CreatePost(c echo.Context) error {
58
63
UserID : id ,
59
64
}
60
65
61
- postRepository := repositories .NewPostRepository (p .server .DB )
62
- postService := postservice .NewPostService (postRepository )
63
- postService .Create (& post )
66
+ p .postService .Create (& post )
64
67
65
68
return responses .MessageResponse (c , http .StatusCreated , "Post successfully created" )
66
69
}
@@ -76,20 +79,18 @@ func (p *PostHandlers) CreatePost(c echo.Context) error {
76
79
// @Failure 404 {object} responses.Error
77
80
// @Security ApiKeyAuth
78
81
// @Router /posts/{id} [delete]
79
- func (p * PostHandlers ) DeletePost (c echo.Context ) error {
82
+ func (p PostHandlers ) DeletePost (c echo.Context ) error {
80
83
id , _ := strconv .Atoi (c .Param ("id" ))
81
84
82
- post := models.Post {}
85
+ post := new ( models.Post )
83
86
84
- postRepository := repositories .NewPostRepository (p .server .DB )
85
- postRepository .GetPost (& post , id )
87
+ p .postService .GetPost (post , id )
86
88
87
89
if post .ID == 0 {
88
90
return responses .ErrorResponse (c , http .StatusNotFound , "Post not found" )
89
91
}
90
92
91
- postService := postservice .NewPostService (postRepository )
92
- postService .Delete (& post )
93
+ p .postService .Delete (post )
93
94
94
95
return responses .MessageResponse (c , http .StatusNoContent , "Post deleted successfully" )
95
96
}
@@ -104,11 +105,10 @@ func (p *PostHandlers) DeletePost(c echo.Context) error {
104
105
// @Success 200 {array} responses.PostResponse
105
106
// @Security ApiKeyAuth
106
107
// @Router /posts [get]
107
- func (p * PostHandlers ) GetPosts (c echo.Context ) error {
108
+ func (p PostHandlers ) GetPosts (c echo.Context ) error {
108
109
var posts []models.Post
109
110
110
- postRepository := repositories .NewPostRepository (p .server .DB )
111
- postRepository .GetPosts (& posts )
111
+ p .postService .GetPosts (& posts )
112
112
113
113
response := responses .NewPostResponse (posts )
114
114
return responses .Response (c , http .StatusOK , response )
@@ -129,7 +129,7 @@ func (p *PostHandlers) GetPosts(c echo.Context) error {
129
129
// @Failure 404 {object} responses.Error
130
130
// @Security ApiKeyAuth
131
131
// @Router /posts/{id} [put]
132
- func (p * PostHandlers ) UpdatePost (c echo.Context ) error {
132
+ func (p PostHandlers ) UpdatePost (c echo.Context ) error {
133
133
updatePostRequest := new (requests.UpdatePostRequest )
134
134
id , _ := strconv .Atoi (c .Param ("id" ))
135
135
@@ -143,15 +143,13 @@ func (p *PostHandlers) UpdatePost(c echo.Context) error {
143
143
144
144
post := models.Post {}
145
145
146
- postRepository := repositories .NewPostRepository (p .server .DB )
147
- postRepository .GetPost (& post , id )
146
+ p .postService .GetPost (& post , id )
148
147
149
148
if post .ID == 0 {
150
149
return responses .ErrorResponse (c , http .StatusNotFound , "Post not found" )
151
150
}
152
151
153
- postService := postservice .NewPostService (postRepository )
154
- postService .Update (& post , updatePostRequest )
152
+ p .postService .Update (& post , updatePostRequest )
155
153
156
154
return responses .MessageResponse (c , http .StatusOK , "Post successfully updated" )
157
155
}
0 commit comments