package routes import ( "github.com/gin-gonic/gin" "golang-test/controllers" "golang-test/database" "golang-test/middlewares" "golang-test/types" "net/http" ) // ResolveRoutes настраивает конечные точки API func ResolveRoutes(r *gin.Engine) { // Создать новый продукт r.POST("/product", func(c *gin.Context) { var product database.Product if err := c.ShouldBind(&product); err != nil { c.JSON(http.StatusBadRequest, types.ErrorResponse{Message: err.Error()}) return } controllers.CreateProduct(c, product) }) // Удалить продукт по ID r.DELETE("/product/:id", func(c *gin.Context) { controllers.DeleteProduct(c) }) // Получить все продукты r.GET("/product", func(c *gin.Context) { controllers.GetProducts(c) }) // Получить информацию о продукте по ID r.GET("/product/:id", func(c *gin.Context) { controllers.GetProductInfo(c) }) // Купить продукт по ID r.GET("/product/:id/buy", middlewares.AuthMiddleware(), func(c *gin.Context) { controllers.BuyProduct(c) }) // Создать нового производителя r.POST("/manufacturer", func(c *gin.Context) { var manufacturer database.Manufacturer if err := c.ShouldBind(&manufacturer); err != nil { c.JSON(http.StatusBadRequest, types.ErrorResponse{Message: err.Error()}) return } controllers.CreateManufacturer(c, manufacturer) }) // Удалить производителя по ID r.DELETE("/manufacturer/:id", func(c *gin.Context) { controllers.DeleteManufacturer(c) }) // Получить всех производителей r.GET("/manufacturer", func(c *gin.Context) { controllers.GetManufacturers(c) }) // Редактировать производителя по ID r.PATCH("/manufacturer/:id", func(c *gin.Context) { var manufacturer types.ManufacturerPatchRequest if err := c.ShouldBind(&manufacturer); err != nil { c.JSON(http.StatusBadRequest, types.ErrorResponse{Message: err.Error()}) return } controllers.EditManufacture(c, manufacturer) }) // Зарегистрировать нового пользователя r.POST("/registration", func(c *gin.Context) { var form types.RegisterRequest if err := c.ShouldBind(&form); err != nil { c.JSON(http.StatusBadRequest, types.ErrorResponse{Message: err.Error()}) return } controllers.RegisterUser(c, form) }) // Войти в систему r.POST("/login", func(c *gin.Context) { var register types.LoginRequest if err := c.ShouldBind(®ister); err != nil { c.JSON(http.StatusBadRequest, types.ErrorResponse{Message: err.Error()}) return } controllers.LoginUser(c, register) }) // Получить информацию о пользователе r.GET("/user", middlewares.AuthMiddleware(), func(c *gin.Context) { controllers.GetUser(c) }) // Редактировать имя пользователя r.PATCH("/user", middlewares.AuthMiddleware(), func(c *gin.Context) { var user types.EditUserNameRequest if err := c.ShouldBind(&user); err != nil { c.JSON(http.StatusBadRequest, types.ErrorResponse{Message: err.Error()}) return } controllers.EditUserName(c, user) }) // Добавить деньги на счет пользователя r.POST("/user/addmoney", func(c *gin.Context) { var moneyRequest types.AddMoneyRequest if err := c.ShouldBind(&moneyRequest); err != nil { c.JSON(http.StatusBadRequest, types.ErrorResponse{Message: err.Error()}) return } controllers.AddMoneyToUser(c, moneyRequest) }) // Получить купленные продукты пользователя r.GET("/user/products", middlewares.AuthMiddleware(), func(c *gin.Context) { controllers.GetBuyedProducts(c) }) }