Go-TestAPI/routes/routes.go

125 lines
3.7 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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(&register); 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)
})
}