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) {