37 lines
1.4 KiB
Go
37 lines
1.4 KiB
Go
package expense
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
"gopkg.in/go-playground/validator.v9"
|
|
"net/http"
|
|
"nos-comptes/internal/account"
|
|
"nos-comptes/internal/ginserver"
|
|
"nos-comptes/internal/storage/dao/postgresql"
|
|
"nos-comptes/internal/utils"
|
|
validatorInternal "nos-comptes/internal/utils/validator"
|
|
)
|
|
|
|
const ServiceInjectorKey = "EXPENSE_SERVICE"
|
|
|
|
func Setup(injector *utils.Injector) {
|
|
pg := utils.Get[*postgresql.DatabasePostgreSQL](injector, postgresql.DatabaseKey)
|
|
validate := utils.Get[*validator.Validate](injector, validatorInternal.ValidatorInjectorKey)
|
|
accountService := utils.Get[*account.Service](injector, account.ServiceInjectorKey)
|
|
database := NewDatabase(pg)
|
|
service := NewService(database)
|
|
handler := NewHandler(validate, database, service, accountService)
|
|
securedRoute := utils.Get[*gin.RouterGroup](injector, ginserver.SecuredRouterInjectorKey)
|
|
securedUserRoute := securedRoute.Group("/:userId")
|
|
securedValidAccount := securedUserRoute.Group("/accounts/:accountId")
|
|
|
|
injector.Set(ServiceInjectorKey, service)
|
|
|
|
securedValidAccount.Handle(http.MethodPost, "/expenses", handler.CreateAnExpense)
|
|
securedValidAccount.Handle(http.MethodGet, "/expenses", handler.GetAllExpenses)
|
|
|
|
securedExistingExpenses := securedValidAccount.Group("/expenses/:expenseId")
|
|
securedExistingExpenses.Handle(http.MethodGet, "", handler.GetAnExpenses)
|
|
securedExistingExpenses.Handle(http.MethodDelete, "", handler.DeleteExpense)
|
|
|
|
}
|