mirror of
https://github.com/FJurmanovic/wallet-go-api.git
synced 2026-02-06 06:08:16 +00:00
add DI
This commit is contained in:
@@ -4,57 +4,65 @@ import (
|
||||
"wallet-api/pkg/controllers"
|
||||
"wallet-api/pkg/middleware"
|
||||
"wallet-api/pkg/services"
|
||||
"wallet-api/pkg/utl/common"
|
||||
"wallet-api/pkg/utl/configs"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/go-pg/pg/v10"
|
||||
"go.uber.org/dig"
|
||||
)
|
||||
|
||||
/*
|
||||
Routes
|
||||
|
||||
Initializes web api controllers and its corresponding routes.
|
||||
|
||||
Args:
|
||||
*gin.Engine: Gin Engine
|
||||
*pg.DB: Postgres database client
|
||||
*/
|
||||
func Routes(s *gin.Engine, db *pg.DB) {
|
||||
c := dig.New()
|
||||
ver := s.Group(configs.Prefix)
|
||||
|
||||
api := ver.Group("api")
|
||||
auth := ver.Group("auth")
|
||||
wallet := ver.Group("wallet", middleware.Auth)
|
||||
walletHeader := ver.Group("wallet/wallet-header", middleware.Auth)
|
||||
transaction := ver.Group("transaction", middleware.Auth)
|
||||
transactionType := ver.Group("transaction-type", middleware.Auth)
|
||||
subscription := ver.Group("subscription", middleware.Auth)
|
||||
subscriptionType := ver.Group("subscription-type", middleware.Auth)
|
||||
transactionStatus := ver.Group("transaction-status", middleware.Auth)
|
||||
|
||||
routeGroups := &common.RouteGroups{
|
||||
Api: ver.Group("api"),
|
||||
Auth: ver.Group("auth"),
|
||||
Wallet: ver.Group("wallet", middleware.Auth),
|
||||
WalletHeader: ver.Group("wallet/wallet-header", middleware.Auth),
|
||||
Transaction: ver.Group("transaction", middleware.Auth),
|
||||
TransactionType: ver.Group("transaction-type", middleware.Auth),
|
||||
Subscription: ver.Group("subscription", middleware.Auth),
|
||||
SubscriptionType: ver.Group("subscription-type", middleware.Auth),
|
||||
TransactionStatus: ver.Group("transaction-status", middleware.Auth),
|
||||
}
|
||||
|
||||
s.NoRoute(func(c *gin.Context) {
|
||||
c.JSON(404, gin.H{"code": "PAGE_NOT_FOUND", "message": "Page not found"})
|
||||
})
|
||||
|
||||
|
||||
apiService := services.ApiService{Db: db}
|
||||
usersService := services.UsersService{Db: db}
|
||||
walletService := services.WalletService{Db: db}
|
||||
transactionService := services.TransactionService{Db: db}
|
||||
transactionTypeService := services.TransactionTypeService{Db: db}
|
||||
subscriptionService := services.SubscriptionService{Db: db}
|
||||
subscriptionTypeService := services.SubscriptionTypeService{Db: db}
|
||||
transactionStatusService := services.TransactionStatusService{Db: db}
|
||||
c.Provide(func() *common.RouteGroups {
|
||||
return routeGroups
|
||||
})
|
||||
c.Provide(func() *pg.DB {
|
||||
return db
|
||||
})
|
||||
c.Provide(services.NewApiService)
|
||||
c.Provide(services.NewSubscriptionService)
|
||||
c.Provide(services.NewSubscriptionTypeService)
|
||||
c.Provide(services.NewTransactionService)
|
||||
c.Provide(services.NewTransactionStatusService)
|
||||
c.Provide(services.NewTransactionTypeService)
|
||||
c.Provide(services.NewUsersService)
|
||||
c.Provide(services.NewWalletService)
|
||||
|
||||
walletService.Ss = &subscriptionService
|
||||
transactionService.Ss = &subscriptionService
|
||||
|
||||
controllers.NewApiController(&apiService, api)
|
||||
controllers.NewAuthController(&usersService, auth)
|
||||
controllers.NewWalletsController(&walletService, wallet)
|
||||
controllers.NewWalletsHeaderController(&walletService, walletHeader)
|
||||
controllers.NewTransactionController(&transactionService, transaction)
|
||||
controllers.NewTransactionTypeController(&transactionTypeService, transactionType)
|
||||
controllers.NewSubscriptionController(&subscriptionService, subscription)
|
||||
controllers.NewSubscriptionTypeController(&subscriptionTypeService, subscriptionType)
|
||||
controllers.NewTransactionStatusController(&transactionStatusService, transactionStatus)
|
||||
c.Invoke(controllers.NewApiController)
|
||||
c.Invoke(controllers.NewAuthController)
|
||||
c.Invoke(controllers.NewWalletsController)
|
||||
c.Invoke(controllers.NewWalletsHeaderController)
|
||||
c.Invoke(controllers.NewTransactionController)
|
||||
c.Invoke(controllers.NewTransactionStatusController)
|
||||
c.Invoke(controllers.NewTransactionTypeController)
|
||||
c.Invoke(controllers.NewSubscriptionController)
|
||||
c.Invoke(controllers.NewSubscriptionTypeController)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user