1diff --git a/cmd/server/main.go b/cmd/server/main.go
2index 76cf0c087be14c81404492af02b7c4875d4dd1b9..702ca6e7756dc49c9e23d3a6483a0caada72042b 100644
3--- a/cmd/server/main.go
4+++ b/cmd/server/main.go
5@@ -17,12 +17,11 @@ "gorm.io/driver/sqlite"
6 "gorm.io/gorm"
7
8 "git.sr.ht/~gabrielgio/img"
9- "git.sr.ht/~gabrielgio/img/pkg/components/auth"
10- "git.sr.ht/~gabrielgio/img/pkg/components/filesystem"
11 "git.sr.ht/~gabrielgio/img/pkg/database/localfs"
12 "git.sr.ht/~gabrielgio/img/pkg/database/repository"
13 "git.sr.ht/~gabrielgio/img/pkg/database/sql"
14 "git.sr.ht/~gabrielgio/img/pkg/ext"
15+ "git.sr.ht/~gabrielgio/img/pkg/service"
16 "git.sr.ht/~gabrielgio/img/pkg/view"
17 "git.sr.ht/~gabrielgio/img/pkg/worker"
18 )
19@@ -97,8 +96,8 @@ scheduler := worker.NewScheduler(*schedulerCount)
20
21 // controller
22 var (
23- userController = auth.NewController(userRepository, userRepository, hexKey)
24- fileSystemController = filesystem.NewController(fileSystemRepository)
25+ userController = service.NewAuthController(userRepository, userRepository, hexKey)
26+ fileSystemController = service.NewFileSystemController(fileSystemRepository)
27 )
28
29 // view
30diff --git a/pkg/components/auth/controller.go b/pkg/service/auth.go
31rename from pkg/components/auth/controller.go
32rename to pkg/service/auth.go
33index 0b08fccedac11e0cc5970a746e46432b2390134f..4358a8a6b422a441b85c61c78d13090add66fc84 100644
34--- a/pkg/components/auth/controller.go
35+++ b/pkg/service/auth.go
36@@ -1,34 +1,33 @@
37-package auth
38+package service
39
40 import (
41 "context"
42
43 "golang.org/x/crypto/bcrypt"
44
45- "git.sr.ht/~gabrielgio/img/pkg/components"
46 "git.sr.ht/~gabrielgio/img/pkg/database/repository"
47 "git.sr.ht/~gabrielgio/img/pkg/ext"
48 )
49
50-type Controller struct {
51+type AuthController struct {
52 authRepository repository.AuthRepository
53 userRepository repository.UserRepository
54 key []byte
55 }
56
57-func NewController(
58+func NewAuthController(
59 authRepository repository.AuthRepository,
60 userRepository repository.UserRepository,
61 key []byte,
62-) *Controller {
63- return &Controller{
64+) *AuthController {
65+ return &AuthController{
66 authRepository: authRepository,
67 userRepository: userRepository,
68 key: key,
69 }
70 }
71
72-func (c *Controller) Login(ctx context.Context, username, password []byte) ([]byte, error) {
73+func (c *AuthController) Login(ctx context.Context, username, password []byte) ([]byte, error) {
74 id, err := c.authRepository.GetIDByUsername(ctx, string(username))
75 if err != nil {
76 return nil, err
77@@ -52,14 +51,14 @@ }
78
79 // InitialRegister register a initial user, it will validate if there is another
80 // user stored already. If so an error `InvlidaInput` will be returned
81-func (c *Controller) InitialRegister(ctx context.Context, username, password []byte, path []byte) error {
82+func (c *AuthController) InitialRegister(ctx context.Context, username, password []byte, path []byte) error {
83 exist, err := c.userRepository.Any(ctx)
84 if err != nil {
85 return err
86 }
87
88 if exist {
89- return components.InvlidaInput
90+ return InvlidInput
91 }
92
93 hash, err := bcrypt.GenerateFromPassword(password, bcrypt.MinCost)
94diff --git a/pkg/components/auth/controller_test.go b/pkg/service/auth_test.go
95rename from pkg/components/auth/controller_test.go
96rename to pkg/service/auth_test.go
97index b1ca065d481107931ccca4ee3cc48d581472c5f5..35b247575a785ddb5db5c0df0b810c2b6ec08fd8 100644
98--- a/pkg/components/auth/controller_test.go
99+++ b/pkg/service/auth_test.go
100@@ -1,6 +1,6 @@
101 //go:build unit
102
103-package auth
104+package service
105
106 import (
107 "context"
108@@ -16,7 +16,7 @@ scene struct {
109 ctx context.Context
110 authRepository repository.AuthRepository
111 userRepository repository.UserRepository
112- controller *Controller
113+ controller *AuthController
114 }
115 )
116
117@@ -30,7 +30,7 @@ return &scene{
118 ctx: context.Background(),
119 authRepository: userRepository,
120 userRepository: userRepository,
121- controller: NewController(userRepository, userRepository, key),
122+ controller: NewAuthController(userRepository, userRepository, key),
123 }
124 }
125
126diff --git a/pkg/components/auth/mock_test.go b/pkg/service/main_test.go
127rename from pkg/components/auth/mock_test.go
128rename to pkg/service/main_test.go
129index 885f64316d474bdf213965a55660ee94fd6bd5b2..5c10ecd7fc5d57b30c8344a2b00354b26cdbbef1 100644
130--- a/pkg/components/auth/mock_test.go
131+++ b/pkg/service/main_test.go
132@@ -1,6 +1,6 @@
133 //go:build unit
134
135-package auth
136+package service
137
138 import (
139 "context"
140diff --git a/pkg/components/errors.go b/pkg/components/errors.go
141deleted file mode 100644
142index aedbe889b5f1e2d54616f746b859da359a288be5..0000000000000000000000000000000000000000
143--- a/pkg/components/errors.go
144+++ /dev/null
145@@ -1,8 +0,0 @@
146-package components
147-
148-import "errors"
149-
150-var (
151- NotFound = errors.New("Not found")
152- InvlidaInput = errors.New("Invalid Input")
153-)
154diff --git a/pkg/components/filesystem/controller.go b/pkg/service/filesystem.go
155rename from pkg/components/filesystem/controller.go
156rename to pkg/service/filesystem.go
157index 6c613a3c0c1e1cd8ba152e855deeb12e8fb2b1a3..3516ce2642ba63e2d8ef7f774469657d64123c70 100644
158--- a/pkg/components/filesystem/controller.go
159+++ b/pkg/service/filesystem.go
160@@ -1,4 +1,4 @@
161-package filesystem
162+package service
163
164 import (
165 "io/fs"
166@@ -10,7 +10,7 @@ "git.sr.ht/~gabrielgio/img/pkg/database/repository"
167 )
168
169 type (
170- Controller struct {
171+ FileSystemController struct {
172 repository repository.FileSystemRepository
173 }
174
175@@ -30,8 +30,8 @@ Files []*FileParam
176 }
177 )
178
179-func NewController(repository repository.FileSystemRepository) *Controller {
180- return &Controller{
181+func NewFileSystemController(repository repository.FileSystemRepository) *FileSystemController {
182+ return &FileSystemController{
183 repository: repository,
184 }
185 }
186@@ -63,7 +63,7 @@ }
187 return result
188 }
189
190-func (self *Controller) GetPage(filepath string) (*Page, error) {
191+func (self *FileSystemController) GetPage(filepath string) (*Page, error) {
192 decodedPath, err := url.QueryUnescape(filepath)
193 if err != nil {
194 return nil, err
195diff --git a/pkg/components/user/controller.go b/pkg/components/user/controller.go
196deleted file mode 100644
197index a00006b65468ecad731002a1e2c54884759656ed..0000000000000000000000000000000000000000
198--- a/pkg/components/user/controller.go
199+++ /dev/null
200@@ -1 +0,0 @@
201-package user
202diff --git a/pkg/service/errors.go b/pkg/service/errors.go
203new file mode 100644
204index 0000000000000000000000000000000000000000..65984642e7efd0eb0b975777cc4a4a942fadd207
205--- /dev/null
206+++ b/pkg/service/errors.go
207@@ -0,0 +1,8 @@
208+package service
209+
210+import "errors"
211+
212+var (
213+ NotFound = errors.New("Not found")
214+ InvlidInput = errors.New("Invalid Input")
215+)
216diff --git a/pkg/view/auth.go b/pkg/view/auth.go
217index 3f9e4140365dbed89f490c6d39e066670fc3d1b4..6b096d9ff553f6d8329eacf7265142696db11d4b 100644
218--- a/pkg/view/auth.go
219+++ b/pkg/view/auth.go
220@@ -6,15 +6,15 @@
221 "github.com/valyala/fasthttp"
222
223 "git.sr.ht/~gabrielgio/img"
224- "git.sr.ht/~gabrielgio/img/pkg/components/auth"
225 "git.sr.ht/~gabrielgio/img/pkg/ext"
226+ "git.sr.ht/~gabrielgio/img/pkg/service"
227 )
228
229 type AuthView struct {
230- userController *auth.Controller
231+ userController *service.AuthController
232 }
233
234-func NewAuthView(userController *auth.Controller) *AuthView {
235+func NewAuthView(userController *service.AuthController) *AuthView {
236 return &AuthView{
237 userController: userController,
238 }
239diff --git a/pkg/view/filesystem.go b/pkg/view/filesystem.go
240index d2ebff41d46fb2a9cb581d29ee31bca4af814216..d598b88014738c96532ea5b265f804ac9f87fcf2 100644
241--- a/pkg/view/filesystem.go
242+++ b/pkg/view/filesystem.go
243@@ -4,25 +4,25 @@ import (
244 "github.com/valyala/fasthttp"
245
246 "git.sr.ht/~gabrielgio/img"
247- "git.sr.ht/~gabrielgio/img/pkg/components/filesystem"
248 "git.sr.ht/~gabrielgio/img/pkg/database/repository"
249 "git.sr.ht/~gabrielgio/img/pkg/ext"
250+ "git.sr.ht/~gabrielgio/img/pkg/service"
251 )
252
253 type (
254 FileSystemView struct {
255- controller filesystem.Controller
256+ controller service.FileSystemController
257 settings repository.SettingsRepository
258 }
259 FilePage struct {
260- Page *filesystem.Page
261+ Page *service.Page
262 ShowMode bool
263 ShowOwner bool
264 }
265 )
266
267 func NewFileSystemView(
268- controller filesystem.Controller,
269+ controller service.FileSystemController,
270 settingsRepository repository.SettingsRepository,
271 ) *FileSystemView {
272 return &FileSystemView{