feat: users & authentication implementation

This commit is contained in:
Florian Sylvain
2023-08-07 12:31:29 +02:00
parent e258dccc1c
commit f33f53ca76
15 changed files with 550 additions and 18 deletions
+23 -7
View File
@@ -9,9 +9,13 @@ import (
)
type Container struct {
CreateArticleUseCase *CreateArticleUseCase
GetArticleUseCase *GetArticleUseCase
ListArticlesUseCase *ListArticlesUseCase
CreateArticleUseCase *CreateArticleUseCase
GetArticleUseCase *GetArticleUseCase
ListArticlesUseCase *ListArticlesUseCase
GetUserUseCase *GetUserUseCase
GetUserByUsernameUseCase *GetUserByUsernameUseCase
CreateUserUseCase *CreateUserUseCase
ListUsersUseCase *ListUsersUseCase
}
var container *Container
@@ -20,11 +24,19 @@ func setContainer(
createArticle *CreateArticleUseCase,
getArticle *GetArticleUseCase,
listArticle *ListArticlesUseCase,
getUser *GetUserUseCase,
getUserByUsername *GetUserByUsernameUseCase,
createUser *CreateUserUseCase,
listUsers *ListUsersUseCase,
) *Container {
container = &Container{
CreateArticleUseCase: createArticle,
GetArticleUseCase: getArticle,
ListArticlesUseCase: listArticle,
CreateArticleUseCase: createArticle,
GetArticleUseCase: getArticle,
ListArticlesUseCase: listArticle,
GetUserUseCase: getUser,
GetUserByUsernameUseCase: getUserByUsername,
CreateUserUseCase: createUser,
ListUsersUseCase: listUsers,
}
return container
}
@@ -40,13 +52,17 @@ func InitContainer() {
if err != nil {
panic(err)
}
_ = db.AutoMigrate(&models.Article{})
_ = db.AutoMigrate(&models.Article{}, &models.User{})
_ = digContainer.Provide(func() *gorm.DB { return db })
_ = digContainer.Provide(func(db *gorm.DB) *CreateArticleUseCase { return NewCreateArticleUseCase(db) })
_ = digContainer.Provide(func(db *gorm.DB) *GetArticleUseCase { return NewGetArticleUseCase(db) })
_ = digContainer.Provide(func(db *gorm.DB) *ListArticlesUseCase { return NewListArticlesUseCase(db) })
_ = digContainer.Provide(func(db *gorm.DB) *GetUserUseCase { return NewGetUserUseCase(db) })
_ = digContainer.Provide(func(db *gorm.DB) *GetUserByUsernameUseCase { return NewGetUserByUsernameUseCase(db) })
_ = digContainer.Provide(func(db *gorm.DB) *CreateUserUseCase { return NewCreateUserUseCase(db) })
_ = digContainer.Provide(func(db *gorm.DB) *ListUsersUseCase { return NewListUsersUseCase(db) })
_ = digContainer.Invoke(setContainer)
}