mirror of
https://github.com/Floriansylvain/RenewCMS.git
synced 2026-08-19 11:43:22 +02:00
69 lines
2.2 KiB
Go
69 lines
2.2 KiB
Go
package api
|
|
|
|
import (
|
|
"GohCMS2/adapters/secondary/gateways/models"
|
|
"GohCMS2/useCases"
|
|
"github.com/glebarez/sqlite"
|
|
"go.uber.org/dig"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type LocalContainer struct {
|
|
CreateArticleUseCase *useCases.CreateArticleUseCase
|
|
GetArticleUseCase *useCases.GetArticleUseCase
|
|
ListArticlesUseCase *useCases.ListArticlesUseCase
|
|
GetUserUseCase *useCases.GetUserUseCase
|
|
CreateUserUseCase *useCases.CreateUserUseCase
|
|
ListUsersUseCase *useCases.ListUsersUseCase
|
|
GetPageUseCase *useCases.GetPageUseCase
|
|
}
|
|
|
|
var Container *LocalContainer
|
|
|
|
func setContainer(
|
|
createArticle *useCases.CreateArticleUseCase,
|
|
getArticle *useCases.GetArticleUseCase,
|
|
listArticle *useCases.ListArticlesUseCase,
|
|
getUser *useCases.GetUserUseCase,
|
|
createUser *useCases.CreateUserUseCase,
|
|
listUsers *useCases.ListUsersUseCase,
|
|
getPage *useCases.GetPageUseCase,
|
|
) *LocalContainer {
|
|
Container = &LocalContainer{
|
|
CreateArticleUseCase: createArticle,
|
|
GetArticleUseCase: getArticle,
|
|
ListArticlesUseCase: listArticle,
|
|
GetUserUseCase: getUser,
|
|
CreateUserUseCase: createUser,
|
|
ListUsersUseCase: listUsers,
|
|
GetPageUseCase: getPage,
|
|
}
|
|
return Container
|
|
}
|
|
|
|
func InitContainer() {
|
|
if Container != nil {
|
|
return
|
|
}
|
|
|
|
digContainer := dig.New()
|
|
|
|
db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
_ = db.AutoMigrate(&models.Article{}, &models.User{})
|
|
|
|
_ = digContainer.Provide(func() *gorm.DB { return db })
|
|
|
|
_ = digContainer.Provide(func(db *gorm.DB) *useCases.CreateArticleUseCase { return useCases.NewCreateArticleUseCase(db) })
|
|
_ = digContainer.Provide(func(db *gorm.DB) *useCases.GetArticleUseCase { return useCases.NewGetArticleUseCase(db) })
|
|
_ = digContainer.Provide(func(db *gorm.DB) *useCases.ListArticlesUseCase { return useCases.NewListArticlesUseCase(db) })
|
|
_ = digContainer.Provide(func(db *gorm.DB) *useCases.GetUserUseCase { return useCases.NewGetUserUseCase(db) })
|
|
_ = digContainer.Provide(func(db *gorm.DB) *useCases.CreateUserUseCase { return useCases.NewCreateUserUseCase(db) })
|
|
_ = digContainer.Provide(func(db *gorm.DB) *useCases.ListUsersUseCase { return useCases.NewListUsersUseCase(db) })
|
|
_ = digContainer.Provide(useCases.NewGetPageUseCase)
|
|
|
|
_ = digContainer.Invoke(setContainer)
|
|
}
|