This commit is contained in:
Fran Jurmanović
2022-09-26 21:17:30 +02:00
parent 73a41f2b54
commit 13ce0735d0
19 changed files with 466 additions and 341 deletions

View File

@@ -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)
}