package users import ( "database/sql" "mangezmieux-backend/internal/ginserver" "mangezmieux-backend/internal/injector" "mangezmieux-backend/internal/jwt" "mangezmieux-backend/internal/postgres" service2 "mangezmieux-backend/internal/users/service" sql2 "mangezmieux-backend/internal/users/sql" "mangezmieux-backend/internal/validator" "net/http" "github.com/gin-gonic/gin" validatorv10 "github.com/go-playground/validator/v10" ) const ServiceKey = "UsersService" func Setup(inj *injector.Injector) { publicRoute := injector.Get[*gin.RouterGroup](inj, ginserver.UnsecuredRouterInjectorKey) validatorCli := injector.Get[*validatorv10.Validate](inj, validator.ValidatorInjectorKey) jwtService := injector.Get[*jwt.Service](inj, jwt.JWTKey) client := injector.Get[*sql.DB](inj, postgres.DatabaseKey) dao := sql2.NewDao(client) service := service2.NewService(dao, jwtService) handler := NewHandler(service, validatorCli) inj.Set(ServiceKey, service) publicRoute.Handle(http.MethodPost, "/api/v1/users", handler.CreateUser) publicRoute.Handle(http.MethodPost, "/oauth2/token", handler.Login) publicRoute.Handle(http.MethodPost, "/oauth2/introspect", handler.IntrospectToken) publicRoute.Handle(http.MethodPost, "/oauth2/refresh", handler.RefreshToken) securedRoute := injector.Get[*gin.RouterGroup](inj, ginserver.SecuredRouterInjectorKey) securedRoute.Handle(http.MethodGet, "/users/me", handler.GetMe) }