mirror of
https://github.com/Floriansylvain/RenewCMS.git
synced 2026-08-19 19:53:21 +02:00
Renamed the 'Article' domain to 'Post' in order to better reflect the purpose and utility of the object. The change involved renaming all related use cases, classes, and other references from 'Article' to 'Post' and updating all functions and data types to work with Posts instead of Articles.
77 lines
2.5 KiB
Go
77 lines
2.5 KiB
Go
package api
|
|
|
|
import (
|
|
"GohCMS2/adapters/secondary/gateways/models"
|
|
"GohCMS2/useCases"
|
|
"github.com/glebarez/sqlite"
|
|
"go.uber.org/dig"
|
|
"gorm.io/gorm"
|
|
"os"
|
|
"path/filepath"
|
|
)
|
|
|
|
type LocalContainer struct {
|
|
CreateArticleUseCase *useCases.CreatePostUseCase
|
|
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.CreatePostUseCase,
|
|
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()
|
|
|
|
dbName := os.Getenv("DB_FILE")
|
|
if err := os.MkdirAll(filepath.Dir(dbName), os.ModePerm); err != nil {
|
|
panic("Unable to create necessary subdirectories: " + err.Error())
|
|
}
|
|
|
|
db, err := gorm.Open(sqlite.Open(dbName), &gorm.Config{})
|
|
if err != nil {
|
|
panic("Unable to open the database: " + err.Error())
|
|
}
|
|
|
|
_ = db.AutoMigrate(&models.Post{}, &models.User{})
|
|
|
|
_ = digContainer.Provide(func() *gorm.DB { return db })
|
|
|
|
_ = digContainer.Provide(func(db *gorm.DB) *useCases.CreatePostUseCase { return useCases.NewCreatePostUseCase(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)
|
|
}
|