35 lines
1.3 KiB
Go
35 lines
1.3 KiB
Go
package account
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
"net/http"
|
|
"nos-comptes/internal/ginserver"
|
|
"nos-comptes/internal/storage/dao/postgresql"
|
|
"nos-comptes/internal/user"
|
|
"nos-comptes/internal/utils"
|
|
)
|
|
|
|
const ServiceInjectorKey = "ACCOUNT_SERVICE"
|
|
|
|
func Setup(injector *utils.Injector) {
|
|
pg := utils.Get[*postgresql.DatabasePostgreSQL](injector, postgresql.DatabaseKey)
|
|
userService := utils.Get[*user.Service](injector, user.ServiceInjectorKey)
|
|
database := NewDatabase(pg)
|
|
service := NewService(database)
|
|
validator := NewValidator(service)
|
|
handler := NewHandler(validator, database, service, userService)
|
|
securedRoute := utils.Get[*gin.RouterGroup](injector, ginserver.SecuredRouterInjectorKey)
|
|
securedUserRoute := securedRoute.Group("/:userId")
|
|
//account route
|
|
securedUserRoute.Handle(http.MethodGet, "/accounts", handler.GetAllAccountOfUser)
|
|
securedUserRoute.Handle(http.MethodPost, "/accounts", handler.CreateAccountOfUser)
|
|
|
|
securedValidAccount := securedUserRoute.Group("/accounts/:accountId")
|
|
securedValidAccount.Use(validator.HasValidAccountId)
|
|
securedValidAccount.Use(validator.AccountExists)
|
|
securedValidAccount.Handle(http.MethodDelete, "", handler.DeleteAccountOfUser)
|
|
securedValidAccount.Handle(http.MethodGet, "", handler.GetSpecificAccountOfUser)
|
|
|
|
injector.Set(ServiceInjectorKey, service)
|
|
}
|