125 lines
3.7 KiB
Go
125 lines
3.7 KiB
Go
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)
|
||
})
|
||
}
|