diff --git a/adapters/secondary/gateways/mailRepository.go b/adapters/secondary/gateways/mailRepository.go index 587c666..0121fd7 100644 --- a/adapters/secondary/gateways/mailRepository.go +++ b/adapters/secondary/gateways/mailRepository.go @@ -4,11 +4,12 @@ import ( "GoCMS/domain/gateways" "bytes" "embed" - "gopkg.in/gomail.v2" "html/template" "log" "os" "strconv" + + "gopkg.in/gomail.v2" ) type MailRepository struct{} @@ -16,7 +17,11 @@ type MailRepository struct{} //go:embed mail/templates/* var mailTemplateFiles embed.FS -func (m MailRepository) Send(receiverAddress string, templateName string, data interface{}) error { +func NewMailRepository() *MailRepository { + return &MailRepository{} +} + +func (m MailRepository) Send(receiverAddress string, templateName string, data any) error { from := os.Getenv("SMTP_EMAIL") password := os.Getenv("SMTP_PASSWORD") smtpHost := os.Getenv("SMTP_HOST") diff --git a/adapters/secondary/gateways/pageRepository.go b/adapters/secondary/gateways/pageRepository.go index aadf740..2ec4d04 100644 --- a/adapters/secondary/gateways/pageRepository.go +++ b/adapters/secondary/gateways/pageRepository.go @@ -16,7 +16,7 @@ func NewPageRepository() *PageRepository { return &PageRepository{} } -func (p *PageRepository) Get(name string, data interface{}) ([]byte, error) { +func (p *PageRepository) Get(name string, data any) ([]byte, error) { var processedHTML bytes.Buffer tmpl, err := template.ParseFS(webTemplateFiles, "web/templates/"+name+".html") if err != nil { diff --git a/adapters/secondary/gateways/web/templates/home.html b/adapters/secondary/gateways/web/templates/home.html index 583c756..562aa7d 100644 --- a/adapters/secondary/gateways/web/templates/home.html +++ b/adapters/secondary/gateways/web/templates/home.html @@ -7,7 +7,7 @@ {{.Navbar}}
-

Accueil

+

Home

Welcome on GoCMS !

diff --git a/api/controllers/auth/auth.go b/api/controllers/auth/auth.go index 4ec67b8..4692b55 100644 --- a/api/controllers/auth/auth.go +++ b/api/controllers/auth/auth.go @@ -34,7 +34,7 @@ const LogsErrorMessage = "Access to the requested resource is forbidden due to i const BodyErrorMessage = "The request cannot be processed due to a mismatch in the format of the body." func SetJwtCookie(w *http.ResponseWriter, userId uint32) error { - _, tokenString, err := Token.Encode(map[string]interface{}{"user_id": userId}) + _, tokenString, err := Token.Encode(map[string]any{"user_id": userId}) if err != nil { return err } @@ -138,7 +138,7 @@ func login(w http.ResponseWriter, r *http.Request) { _ = SetJwtCookie(&w, dbUser.ID) - message, _ := json.Marshal(map[string]interface{}{"message": "User logged in! HTTPonly jwt cookie created"}) + message, _ := json.Marshal(map[string]any{"message": "User logged in! HTTPonly jwt cookie created"}) _, _ = w.Write(message) } @@ -170,7 +170,7 @@ func register(w http.ResponseWriter, r *http.Request) { _ = SetJwtCookie(&w, createdUser.ID) - message, _ := json.Marshal(map[string]interface{}{"message": "User registered! HTTPonly jwt cookie created"}) + message, _ := json.Marshal(map[string]any{"message": "User registered! HTTPonly jwt cookie created"}) _, _ = w.Write(message) } @@ -188,7 +188,7 @@ func RemoveJwtCookie(w http.ResponseWriter) { func logout(w http.ResponseWriter, _ *http.Request) { RemoveJwtCookie(w) - message, _ := json.Marshal(map[string]interface{}{"message": "User logged out! HTTPonly jwt cookie deleted"}) + message, _ := json.Marshal(map[string]any{"message": "User logged out! HTTPonly jwt cookie deleted"}) _, _ = w.Write(message) } diff --git a/api/controllers/image/image.go b/api/controllers/image/image.go index dd10cda..be154dc 100644 --- a/api/controllers/image/image.go +++ b/api/controllers/image/image.go @@ -33,7 +33,7 @@ func PostImage(w http.ResponseWriter, r *http.Request) { return } - newJson := map[string]interface{}{"location": newImage.Path} + newJson := map[string]any{"location": newImage.Path} newJsonBytes, _ := json.Marshal(newJson) _, _ = w.Write(newJsonBytes) diff --git a/api/controllers/pages/home.go b/api/controllers/pages/home.go index b495a56..cafeb42 100644 --- a/api/controllers/pages/home.go +++ b/api/controllers/pages/home.go @@ -8,7 +8,7 @@ import ( func GetHomePage(w http.ResponseWriter, _ *http.Request) { navbarTmpl, _ := api.Container.GetPageUseCase.GetPage("componentNavbar", nil) - homeTmpl, _ := api.Container.GetPageUseCase.GetPage("home", map[string]interface{}{ + homeTmpl, _ := api.Container.GetPageUseCase.GetPage("home", map[string]any{ "Navbar": template.HTML(navbarTmpl), "Head": headTmpl, }) diff --git a/api/controllers/pages/integration.go b/api/controllers/pages/integration.go index a830a38..ced7c3d 100644 --- a/api/controllers/pages/integration.go +++ b/api/controllers/pages/integration.go @@ -9,7 +9,7 @@ import ( func GetPageIntegration(w http.ResponseWriter, r *http.Request) { navbarTmpl, _ := api.Container.GetPageUseCase.GetPage("componentNavbar", nil) - templ, _ := api.Container.GetPageUseCase.GetPage("integration", map[string]interface{}{ + templ, _ := api.Container.GetPageUseCase.GetPage("integration", map[string]any{ "Navbar": template.HTML(navbarTmpl), "Head": headTmpl, "Host": os.Getenv("HOST"), diff --git a/api/controllers/pages/login.go b/api/controllers/pages/login.go index 04e17f4..26697db 100644 --- a/api/controllers/pages/login.go +++ b/api/controllers/pages/login.go @@ -35,7 +35,7 @@ func GetLoginPageHandler(loginPage *LoginPage) http.HandlerFunc { } success, _ := url.QueryUnescape(r.URL.Query().Get("success")) failure, _ := url.QueryUnescape(r.URL.Query().Get("failure")) - bs, _ := api.Container.GetPageUseCase.GetPage("login", map[string]interface{}{ + bs, _ := api.Container.GetPageUseCase.GetPage("login", map[string]any{ "PageError": loginPage.PageError, "Username": loginPage.Username, "Head": headTmpl, diff --git a/api/controllers/pages/passwordResetRequest.go b/api/controllers/pages/passwordResetRequest.go index d360832..d2860dc 100644 --- a/api/controllers/pages/passwordResetRequest.go +++ b/api/controllers/pages/passwordResetRequest.go @@ -18,7 +18,7 @@ func GetPasswordResetRequest(w http.ResponseWriter, r *http.Request) { success := r.URL.Query().Get("success") email := r.URL.Query().Get("email") - bs, _ := api.Container.GetPageUseCase.GetPage("passwordResetRequest", map[string]interface{}{ + bs, _ := api.Container.GetPageUseCase.GetPage("passwordResetRequest", map[string]any{ "Head": headTmpl, "Email": email, "Success": success, diff --git a/api/controllers/pages/passwordResetValidate.go b/api/controllers/pages/passwordResetValidate.go index 457688e..5f806fb 100644 --- a/api/controllers/pages/passwordResetValidate.go +++ b/api/controllers/pages/passwordResetValidate.go @@ -16,7 +16,7 @@ func GetPasswordResetValidate(w http.ResponseWriter, r *http.Request) { if failure != "" { pageError = NewPageError(failure) } - template, _ := api.Container.GetPageUseCase.GetPage("passwordResetValidate", map[string]interface{}{ + template, _ := api.Container.GetPageUseCase.GetPage("passwordResetValidate", map[string]any{ "Head": headTmpl, "Error": pageError, "Email": r.URL.Query().Get("email"), diff --git a/api/controllers/pages/postCreate.go b/api/controllers/pages/postCreate.go index c8943c2..4634ce9 100644 --- a/api/controllers/pages/postCreate.go +++ b/api/controllers/pages/postCreate.go @@ -16,7 +16,7 @@ type PostCreatePageError struct { func GetPostCreatePageTemplate(postName string, errorMessage string) ([]byte, error) { navbarTmpl, _ := api.Container.GetPageUseCase.GetPage("componentNavbar", nil) - return api.Container.GetPageUseCase.GetPage("postCreate", map[string]interface{}{ + return api.Container.GetPageUseCase.GetPage("postCreate", map[string]any{ "Navbar": template.HTML(navbarTmpl), "Head": headTmpl, "PageError": PostCreatePageError{ diff --git a/api/controllers/pages/postEdit.go b/api/controllers/pages/postEdit.go index a1c2d9c..c1be459 100644 --- a/api/controllers/pages/postEdit.go +++ b/api/controllers/pages/postEdit.go @@ -18,7 +18,7 @@ type PostEditPageAlert struct { func getPostEditPageTemplate(post post.Post, alert PostEditPageAlert) []byte { navbarTmpl, _ := api.Container.GetPageUseCase.GetPage("componentNavbar", nil) - postTmpl, _ := api.Container.GetPageUseCase.GetPage("postEdit", map[string]interface{}{ + postTmpl, _ := api.Container.GetPageUseCase.GetPage("postEdit", map[string]any{ "Navbar": template.HTML(navbarTmpl), "Head": headTmpl, "Post": post, diff --git a/api/controllers/pages/posts.go b/api/controllers/pages/posts.go index 82a5238..20e97e1 100644 --- a/api/controllers/pages/posts.go +++ b/api/controllers/pages/posts.go @@ -9,9 +9,9 @@ import ( func GetPostsPage(w http.ResponseWriter, _ *http.Request) { posts := api.Container.ListPostsUseCase.ListPosts() - var formattedPosts []map[string]interface{} + var formattedPosts []map[string]any for _, post := range posts { - formattedPosts = append(formattedPosts, map[string]interface{}{ + formattedPosts = append(formattedPosts, map[string]any{ "ID": post.ID, "Title": post.Title, "IsOnline": post.IsOnline, @@ -21,7 +21,7 @@ func GetPostsPage(w http.ResponseWriter, _ *http.Request) { } navbarTmpl, _ := api.Container.GetPageUseCase.GetPage("componentNavbar", nil) - postsTmpl, _ := api.Container.GetPageUseCase.GetPage("posts", map[string]interface{}{ + postsTmpl, _ := api.Container.GetPageUseCase.GetPage("posts", map[string]any{ "Navbar": template.HTML(navbarTmpl), "Head": headTmpl, "Posts": formattedPosts, diff --git a/api/controllers/pages/register.go b/api/controllers/pages/register.go index 3152ef3..30e0d6a 100644 --- a/api/controllers/pages/register.go +++ b/api/controllers/pages/register.go @@ -44,7 +44,7 @@ func GetRegisterPageHandler(registerPage *RegisterPage) http.HandlerFunc { PostRegisterPage(w, r) return } - bs, err := api.Container.GetPageUseCase.GetPage("register", map[string]interface{}{ + bs, err := api.Container.GetPageUseCase.GetPage("register", map[string]any{ "PageError": registerPage.PageError, "Username": registerPage.Username, "Email": registerPage.Email, diff --git a/api/controllers/pages/registerPending.go b/api/controllers/pages/registerPending.go index 3be312a..75355df 100644 --- a/api/controllers/pages/registerPending.go +++ b/api/controllers/pages/registerPending.go @@ -29,7 +29,7 @@ func PostRegisterPendingPage(w http.ResponseWriter, r *http.Request) { } func GetRegisterPendingPage(w http.ResponseWriter, _ *http.Request) { - registerPendingTmpl, _ := api.Container.GetPageUseCase.GetPage("registerPending", map[string]interface{}{ + registerPendingTmpl, _ := api.Container.GetPageUseCase.GetPage("registerPending", map[string]any{ "Head": headTmpl, }) _, _ = w.Write(registerPendingTmpl) diff --git a/api/controllers/pages/registerValidate.go b/api/controllers/pages/registerValidate.go index 599f432..2076b85 100644 --- a/api/controllers/pages/registerValidate.go +++ b/api/controllers/pages/registerValidate.go @@ -38,7 +38,7 @@ func GetRegisterValidatePage(w http.ResponseWriter, r *http.Request) { } } - registerValidateTmpl, _ := api.Container.GetPageUseCase.GetPage("registerValidate", map[string]interface{}{ + registerValidateTmpl, _ := api.Container.GetPageUseCase.GetPage("registerValidate", map[string]any{ "Head": headTmpl, "PageError": NewPageError(errorMessage), }) diff --git a/api/dependecyInjection.go b/api/dependecyInjection.go index 557616a..096fbb6 100644 --- a/api/dependecyInjection.go +++ b/api/dependecyInjection.go @@ -1,15 +1,42 @@ package api import ( + "GoCMS/adapters/secondary/gateways" "GoCMS/adapters/secondary/gateways/models" "GoCMS/useCases" + "fmt" + "os" + "path/filepath" + "reflect" + "runtime" + "github.com/glebarez/sqlite" "go.uber.org/dig" "gorm.io/gorm" - "os" - "path/filepath" ) +type UseCaseDefinition struct { + Constructor interface{} + FieldName string +} + +var useCaseDefinitions = []UseCaseDefinition{ + {useCases.NewCreatePostUseCase, "CreatePostUseCase"}, + {useCases.NewGetPostUseCase, "GetPostUseCase"}, + {useCases.NewListPostsUseCase, "ListPostsUseCase"}, + {useCases.NewUpdatePostUseCase, "UpdatePostUseCase"}, + {useCases.NewDeletePostUseCase, "DeletePostUseCase"}, + {useCases.NewGetUserUseCase, "GetUserUseCase"}, + {useCases.NewCreateUserUseCase, "CreateUserUseCase"}, + {useCases.NewUpdateUserUseCase, "UpdateUserUseCase"}, + {useCases.NewDeleteUserUseCase, "DeleteUserUseCase"}, + {useCases.NewListUsersUseCase, "ListUsersUseCase"}, + {useCases.NewGetPageUseCase, "GetPageUseCase"}, + {useCases.NewSendMailUseCase, "SendMailUseCase"}, + {useCases.NewCreateImageUseCase, "CreateImageUseCase"}, + {useCases.NewDeleteImageUseCase, "DeleteImageUseCase"}, +} + type UseCases struct { CreatePostUseCase *useCases.CreatePostUseCase GetPostUseCase *useCases.GetPostUseCase @@ -45,29 +72,60 @@ func InitContainer() { digContainer := dig.New() database := getDb() - _ = database.AutoMigrate(&models.Post{}, &models.User{}) - _ = digContainer.Provide(func() *gorm.DB { return database }) + if err := database.AutoMigrate(&models.Post{}, &models.User{}); err != nil { + panic("Failed to migrate database: " + err.Error()) + } - _ = digContainer.Provide(func(db *gorm.DB) *UseCases { - return &UseCases{ - CreatePostUseCase: useCases.NewCreatePostUseCase(db), - GetPostUseCase: useCases.NewGetPostUseCase(db), - ListPostsUseCase: useCases.NewListPostsUseCase(db), - UpdatePostUseCase: useCases.NewUpdatePostUseCase(db), - DeletePostUseCase: useCases.NewDeletePostUseCase(db), - GetUserUseCase: useCases.NewGetUserUseCase(db), - CreateUserUseCase: useCases.NewCreateUserUseCase(db), - UpdateUserUseCase: useCases.NewUpdateUserUseCase(db), - DeleteUserUseCase: useCases.NewDeleteUserUseCase(db), - ListUsersUseCase: useCases.NewListUsersUseCase(db), - GetPageUseCase: useCases.NewGetPageUseCase(), - SendMailUseCase: useCases.NewSendMailUseCase(), - CreateImageUseCase: useCases.NewCreateImageUseCase(db), - DeleteImageUseCase: useCases.NewDeleteImageUseCase(db), + if err := digContainer.Provide(func() *gorm.DB { return database }); err != nil { + panic("Failed to provide database: " + err.Error()) + } + + provideRepositories(digContainer) + + for _, def := range useCaseDefinitions { + if err := digContainer.Provide(def.Constructor); err != nil { + funcName := runtime.FuncForPC(reflect.ValueOf(def.Constructor).Pointer()).Name() + panic(fmt.Sprintf("Failed to provide %s: %v", funcName, err)) } - }) - err := digContainer.Invoke(func(useCases *UseCases) { Container = useCases }) - if err != nil { + } + + if err := digContainer.Provide(func(values ...any) *UseCases { + container := &UseCases{} + containerValue := reflect.ValueOf(container).Elem() + + for i, value := range values { + fieldName := useCaseDefinitions[i].FieldName + field := containerValue.FieldByName(fieldName) + if field.IsValid() && field.CanSet() { + field.Set(reflect.ValueOf(value)) + } else { + panic(fmt.Sprintf("Failed to set field %s", fieldName)) + } + } + + return container + }, dig.As(new(*UseCases))); err != nil { + panic("Failed to provide container constructor: " + err.Error()) + } + + if err := digContainer.Invoke(func(useCases *UseCases) { Container = useCases }); err != nil { panic("Unable to invoke container: " + err.Error()) } } + +func provideRepositories(container *dig.Container) { + repositories := []any{ + gateways.NewPostRepository, + gateways.NewUserRepository, + gateways.NewImageRepository, + gateways.NewMailRepository, + gateways.NewPageRepository, + } + + for _, repo := range repositories { + if err := container.Provide(repo); err != nil { + funcName := runtime.FuncForPC(reflect.ValueOf(repo).Pointer()).Name() + panic(fmt.Sprintf("Failed to provide repository %s: %v", funcName, err)) + } + } +} diff --git a/domain/gateways/IMailRepository.go b/domain/gateways/IMailRepository.go index 9fc695a..c21f625 100644 --- a/domain/gateways/IMailRepository.go +++ b/domain/gateways/IMailRepository.go @@ -1,5 +1,5 @@ package gateways type IMailRepository interface { - Send(receiverAddress string, templateName string, data interface{}) error + Send(receiverAddress string, templateName string, data any) error } diff --git a/domain/gateways/IPageRepository.go b/domain/gateways/IPageRepository.go index 37e1bfd..2447056 100644 --- a/domain/gateways/IPageRepository.go +++ b/domain/gateways/IPageRepository.go @@ -1,5 +1,5 @@ package gateways type IPageRepository interface { - Get(name string, data interface{}) ([]byte, error) + Get(name string, data any) ([]byte, error) } diff --git a/main.exe b/main.exe deleted file mode 100644 index 1d62eb5..0000000 Binary files a/main.exe and /dev/null differ diff --git a/test/utils.go b/test/utils.go index 23e2a23..5ab6ad9 100644 --- a/test/utils.go +++ b/test/utils.go @@ -46,7 +46,7 @@ func StartServerIfNotAlready() { } func getAuthorizationCookie(userId uint32) *http.Cookie { - _, tokenString, err := auth.Token.Encode(map[string]interface{}{"user_id": userId}) + _, tokenString, err := auth.Token.Encode(map[string]any{"user_id": userId}) if err != nil { panic(err) } diff --git a/useCases/CreateImage.go b/useCases/CreateImage.go index c598a5f..bccf49b 100644 --- a/useCases/CreateImage.go +++ b/useCases/CreateImage.go @@ -1,20 +1,17 @@ package useCases import ( - "GoCMS/adapters/secondary/gateways" + "GoCMS/domain/gateways" "GoCMS/domain/image" - "gorm.io/gorm" "mime/multipart" ) type CreateImageUseCase struct { - imageRepository gateways.ImageRepository + imageRepository gateways.IImageRepository } -func NewCreateImageUseCase(db *gorm.DB) *CreateImageUseCase { - return &CreateImageUseCase{ - imageRepository: *gateways.NewImageRepository(db), - } +func NewCreateImageUseCase(imageRepository gateways.IImageRepository) *CreateImageUseCase { + return &CreateImageUseCase{imageRepository} } func (g *CreateImageUseCase) CreateImage(file multipart.File, fileHeader multipart.FileHeader) (image.Image, error) { diff --git a/useCases/CreatePost.go b/useCases/CreatePost.go index 2d40472..fd7467e 100644 --- a/useCases/CreatePost.go +++ b/useCases/CreatePost.go @@ -1,13 +1,12 @@ package useCases import ( - "GoCMS/adapters/secondary/gateways" + "GoCMS/domain/gateways" "GoCMS/domain/post" - "gorm.io/gorm" ) type CreatePostUseCase struct { - postRepository gateways.PostRepository + postRepository gateways.IPostRepository } type CreatePostCommand struct { @@ -15,10 +14,8 @@ type CreatePostCommand struct { Body string } -func NewCreatePostUseCase(db *gorm.DB) *CreatePostUseCase { - return &CreatePostUseCase{ - postRepository: *gateways.NewPostRepository(db), - } +func NewCreatePostUseCase(postRepository gateways.IPostRepository) *CreatePostUseCase { + return &CreatePostUseCase{postRepository} } func (g *CreatePostUseCase) CreatePost(createPost CreatePostCommand) (post.Post, error) { diff --git a/useCases/CreateUser.go b/useCases/CreateUser.go index a25ba1a..191d77e 100644 --- a/useCases/CreateUser.go +++ b/useCases/CreateUser.go @@ -1,13 +1,12 @@ package useCases import ( - "GoCMS/adapters/secondary/gateways" + "GoCMS/domain/gateways" "GoCMS/domain/user" - "gorm.io/gorm" ) type CreateUserUseCase struct { - userRepository gateways.UserRepository + userRepository gateways.IUserRepository } type CreateUserCommand struct { @@ -17,10 +16,8 @@ type CreateUserCommand struct { VerificationCode string } -func NewCreateUserUseCase(db *gorm.DB) *CreateUserUseCase { - return &CreateUserUseCase{ - userRepository: *gateways.NewUserRepository(db), - } +func NewCreateUserUseCase(userRepository gateways.IUserRepository) *CreateUserUseCase { + return &CreateUserUseCase{userRepository} } func (g *CreateUserUseCase) CreateUser(createUser CreateUserCommand) (user.User, error) { diff --git a/useCases/DeleteImage.go b/useCases/DeleteImage.go index c1e63e9..1e566f2 100644 --- a/useCases/DeleteImage.go +++ b/useCases/DeleteImage.go @@ -1,18 +1,15 @@ package useCases import ( - "GoCMS/adapters/secondary/gateways" - "gorm.io/gorm" + "GoCMS/domain/gateways" ) type DeleteImageUseCase struct { - imageRepository gateways.ImageRepository + imageRepository gateways.IImageRepository } -func NewDeleteImageUseCase(db *gorm.DB) *DeleteImageUseCase { - return &DeleteImageUseCase{ - imageRepository: *gateways.NewImageRepository(db), - } +func NewDeleteImageUseCase(imageRepository gateways.IImageRepository) *DeleteImageUseCase { + return &DeleteImageUseCase{imageRepository} } func (g *DeleteImageUseCase) DeleteImage(imageId uint32) error { diff --git a/useCases/DeletePost.go b/useCases/DeletePost.go index 4f96190..63b4013 100644 --- a/useCases/DeletePost.go +++ b/useCases/DeletePost.go @@ -1,18 +1,15 @@ package useCases import ( - "GoCMS/adapters/secondary/gateways" - "gorm.io/gorm" + "GoCMS/domain/gateways" ) type DeletePostUseCase struct { - postRepository gateways.PostRepository + postRepository gateways.IPostRepository } -func NewDeletePostUseCase(db *gorm.DB) *DeletePostUseCase { - return &DeletePostUseCase{ - postRepository: *gateways.NewPostRepository(db), - } +func NewDeletePostUseCase(postRepository gateways.IPostRepository) *DeletePostUseCase { + return &DeletePostUseCase{postRepository} } func (g *DeletePostUseCase) DeletePost(userId uint32) error { diff --git a/useCases/DeleteUser.go b/useCases/DeleteUser.go index 5e1a647..b8eec91 100644 --- a/useCases/DeleteUser.go +++ b/useCases/DeleteUser.go @@ -1,18 +1,15 @@ package useCases import ( - "GoCMS/adapters/secondary/gateways" - "gorm.io/gorm" + "GoCMS/domain/gateways" ) type DeleteUserUseCase struct { - userRepository gateways.UserRepository + userRepository gateways.IUserRepository } -func NewDeleteUserUseCase(db *gorm.DB) *DeleteUserUseCase { - return &DeleteUserUseCase{ - userRepository: *gateways.NewUserRepository(db), - } +func NewDeleteUserUseCase(userRepository gateways.IUserRepository) *DeleteUserUseCase { + return &DeleteUserUseCase{userRepository} } func (g *DeleteUserUseCase) DeleteUser(userId uint32) error { diff --git a/useCases/GetPage.go b/useCases/GetPage.go index efae53e..a9da770 100644 --- a/useCases/GetPage.go +++ b/useCases/GetPage.go @@ -1,19 +1,17 @@ package useCases import ( - "GoCMS/adapters/secondary/gateways" + "GoCMS/domain/gateways" ) type GetPageUseCase struct { - pageRepository gateways.PageRepository + pageRepository gateways.IPageRepository } -func NewGetPageUseCase() *GetPageUseCase { - return &GetPageUseCase{ - pageRepository: *gateways.NewPageRepository(), - } +func NewGetPageUseCase(pageRepository gateways.IPageRepository) *GetPageUseCase { + return &GetPageUseCase{pageRepository} } -func (g *GetPageUseCase) GetPage(name string, data interface{}) ([]byte, error) { +func (g *GetPageUseCase) GetPage(name string, data any) ([]byte, error) { return g.pageRepository.Get(name, data) } diff --git a/useCases/GetPost.go b/useCases/GetPost.go index 7945e48..6ff896c 100644 --- a/useCases/GetPost.go +++ b/useCases/GetPost.go @@ -1,19 +1,16 @@ package useCases import ( - "GoCMS/adapters/secondary/gateways" + "GoCMS/domain/gateways" "GoCMS/domain/post" - "gorm.io/gorm" ) type GetPostUseCase struct { - postRepository gateways.PostRepository + postRepository gateways.IPostRepository } -func NewGetPostUseCase(db *gorm.DB) *GetPostUseCase { - return &GetPostUseCase{ - postRepository: *gateways.NewPostRepository(db), - } +func NewGetPostUseCase(postRepository gateways.IPostRepository) *GetPostUseCase { + return &GetPostUseCase{postRepository} } func (g *GetPostUseCase) GetPost(id uint32) (post.Post, error) { diff --git a/useCases/GetUser.go b/useCases/GetUser.go index 9d9694c..3d1050f 100644 --- a/useCases/GetUser.go +++ b/useCases/GetUser.go @@ -1,19 +1,16 @@ package useCases import ( - "GoCMS/adapters/secondary/gateways" + "GoCMS/domain/gateways" "GoCMS/domain/user" - "gorm.io/gorm" ) type GetUserUseCase struct { - userRepository gateways.UserRepository + userRepository gateways.IUserRepository } -func NewGetUserUseCase(db *gorm.DB) *GetUserUseCase { - return &GetUserUseCase{ - userRepository: *gateways.NewUserRepository(db), - } +func NewGetUserUseCase(userRepository gateways.IUserRepository) *GetUserUseCase { + return &GetUserUseCase{userRepository} } func (g *GetUserUseCase) GetUser(id uint32) (user.User, error) { diff --git a/useCases/ListPosts.go b/useCases/ListPosts.go index 94a04f0..4bf0a4b 100644 --- a/useCases/ListPosts.go +++ b/useCases/ListPosts.go @@ -1,19 +1,16 @@ package useCases import ( - "GoCMS/adapters/secondary/gateways" + "GoCMS/domain/gateways" "GoCMS/domain/post" - "gorm.io/gorm" ) type ListPostsUseCase struct { - postRepository gateways.PostRepository + postRepository gateways.IPostRepository } -func NewListPostsUseCase(db *gorm.DB) *ListPostsUseCase { - return &ListPostsUseCase{ - postRepository: *gateways.NewPostRepository(db), - } +func NewListPostsUseCase(postRepository gateways.IPostRepository) *ListPostsUseCase { + return &ListPostsUseCase{postRepository} } func (g *ListPostsUseCase) ListPosts() []post.Post { diff --git a/useCases/ListUsers.go b/useCases/ListUsers.go index c13fbfb..681158f 100644 --- a/useCases/ListUsers.go +++ b/useCases/ListUsers.go @@ -1,19 +1,16 @@ package useCases import ( - "GoCMS/adapters/secondary/gateways" + "GoCMS/domain/gateways" "GoCMS/domain/user" - "gorm.io/gorm" ) type ListUsersUseCase struct { - userRepository gateways.UserRepository + userRepository gateways.IUserRepository } -func NewListUsersUseCase(db *gorm.DB) *ListUsersUseCase { - return &ListUsersUseCase{ - userRepository: *gateways.NewUserRepository(db), - } +func NewListUsersUseCase(userRepository gateways.IUserRepository) *ListUsersUseCase { + return &ListUsersUseCase{userRepository} } func (g *ListUsersUseCase) ListUsers() []user.User { diff --git a/useCases/SendMail.go b/useCases/SendMail.go index cd5b219..bcacb0c 100644 --- a/useCases/SendMail.go +++ b/useCases/SendMail.go @@ -1,17 +1,17 @@ package useCases import ( - "GoCMS/adapters/secondary/gateways" + "GoCMS/domain/gateways" ) type SendMailUseCase struct { - mailRepository gateways.MailRepository + mailRepository gateways.IMailRepository } -func NewSendMailUseCase() *SendMailUseCase { - return &SendMailUseCase{} +func NewSendMailUseCase(mailRepository gateways.IMailRepository) *SendMailUseCase { + return &SendMailUseCase{mailRepository} } -func (g *SendMailUseCase) SendMail(receiverAddress string, templateName string, data interface{}) error { +func (g *SendMailUseCase) SendMail(receiverAddress string, templateName string, data any) error { return g.mailRepository.Send(receiverAddress, templateName, data) } diff --git a/useCases/UpdatePost.go b/useCases/UpdatePost.go index 6499073..b00bf7a 100644 --- a/useCases/UpdatePost.go +++ b/useCases/UpdatePost.go @@ -1,19 +1,16 @@ package useCases import ( - "GoCMS/adapters/secondary/gateways" + "GoCMS/domain/gateways" "GoCMS/domain/post" - "gorm.io/gorm" ) type UpdatePostUseCase struct { - postRepository gateways.PostRepository + postRepository gateways.IPostRepository } -func NewUpdatePostUseCase(db *gorm.DB) *UpdatePostUseCase { - return &UpdatePostUseCase{ - postRepository: *gateways.NewPostRepository(db), - } +func NewUpdatePostUseCase(postRepository gateways.IPostRepository) *UpdatePostUseCase { + return &UpdatePostUseCase{postRepository} } func (g *UpdatePostUseCase) UpdateBody(id uint32, body string) (post.Post, error) { diff --git a/useCases/UpdateUser.go b/useCases/UpdateUser.go index 8fe26c4..7921822 100644 --- a/useCases/UpdateUser.go +++ b/useCases/UpdateUser.go @@ -1,19 +1,16 @@ package useCases import ( - "GoCMS/adapters/secondary/gateways" + "GoCMS/domain/gateways" "GoCMS/domain/user" - "gorm.io/gorm" ) type UpdateUserUseCase struct { - userRepository gateways.UserRepository + userRepository gateways.IUserRepository } -func NewUpdateUserUseCase(db *gorm.DB) *UpdateUserUseCase { - return &UpdateUserUseCase{ - userRepository: *gateways.NewUserRepository(db), - } +func NewUpdateUserUseCase(userRepository gateways.IUserRepository) *UpdateUserUseCase { + return &UpdateUserUseCase{userRepository} } func (g *UpdateUserUseCase) UpdateVerificationStatus(userId uint32, isVerified bool) (user.User, error) {