2024-06-05 08:43:05 +00:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"golang-test/controllers"
|
|
|
|
"golang-test/database"
|
2024-06-06 07:56:17 +00:00
|
|
|
"golang-test/types"
|
2024-06-05 08:43:05 +00:00
|
|
|
"log"
|
|
|
|
"net/http"
|
2024-06-09 12:58:38 +00:00
|
|
|
"github.com/gin-gonic/gin"
|
2024-06-05 08:43:05 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
|
2024-06-06 09:37:44 +00:00
|
|
|
// Создание сервера
|
2024-06-05 08:43:05 +00:00
|
|
|
r := gin.Default()
|
|
|
|
|
2024-06-09 12:58:38 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
2024-06-05 08:43:05 +00:00
|
|
|
r.POST("/product", func(c *gin.Context) {
|
|
|
|
var product database.Product
|
2024-06-06 08:11:07 +00:00
|
|
|
if err := c.ShouldBind(&product); err != nil {
|
2024-06-09 12:58:38 +00:00
|
|
|
c.JSON(http.StatusBadRequest, types.ErrorResponse{Message: err.Error()})
|
|
|
|
return
|
2024-06-05 08:43:05 +00:00
|
|
|
}
|
2024-06-06 08:11:07 +00:00
|
|
|
controllers.CreateProduct(c, product)
|
2024-06-05 08:43:05 +00:00
|
|
|
})
|
|
|
|
|
2024-06-09 12:58:38 +00:00
|
|
|
|
2024-06-06 09:37:44 +00:00
|
|
|
r.DELETE("/product/:id", func(c *gin.Context) {
|
|
|
|
controllers.DeleteProduct(c)
|
|
|
|
})
|
|
|
|
|
2024-06-09 12:58:38 +00:00
|
|
|
|
2024-06-06 09:37:44 +00:00
|
|
|
r.GET("/product", func(c *gin.Context) {
|
|
|
|
controllers.GetProducts(c)
|
|
|
|
})
|
|
|
|
|
2024-06-09 12:58:38 +00:00
|
|
|
|
2024-06-06 09:37:44 +00:00
|
|
|
r.GET("/product/:id", func(c *gin.Context) {
|
|
|
|
controllers.GetProductInfo(c)
|
|
|
|
})
|
|
|
|
|
2024-06-09 12:58:38 +00:00
|
|
|
|
|
|
|
r.GET("/product/:id/buy", func(c *gin.Context) {
|
|
|
|
controllers.BuyProduct(c)
|
|
|
|
})
|
|
|
|
|
|
|
|
|
2024-06-05 08:43:05 +00:00
|
|
|
r.POST("/manufacturer", func(c *gin.Context) {
|
|
|
|
var manufacturer database.Manufacturer
|
|
|
|
if err := c.ShouldBind(&manufacturer); err != nil {
|
2024-06-09 12:58:38 +00:00
|
|
|
c.JSON(http.StatusBadRequest, types.ErrorResponse{Message: err.Error()})
|
|
|
|
return
|
2024-06-05 08:43:05 +00:00
|
|
|
}
|
|
|
|
controllers.CreateManufacturer(c, manufacturer)
|
|
|
|
})
|
|
|
|
|
2024-06-09 12:58:38 +00:00
|
|
|
|
2024-06-05 15:53:24 +00:00
|
|
|
r.DELETE("/manufacturer/:id", func(c *gin.Context) {
|
|
|
|
controllers.DeleteManufacturer(c)
|
|
|
|
})
|
|
|
|
|
2024-06-09 12:58:38 +00:00
|
|
|
|
|
|
|
|
2024-06-05 15:53:24 +00:00
|
|
|
r.GET("/manufacturer", func(c *gin.Context) {
|
|
|
|
controllers.GetManufacturers(c)
|
|
|
|
})
|
|
|
|
|
2024-06-09 12:58:38 +00:00
|
|
|
|
|
|
|
|
2024-06-06 07:56:17 +00:00
|
|
|
r.PATCH("/manufacturer/:id", func(c *gin.Context) {
|
|
|
|
var manufacturer types.ManufacturerPatchRequest
|
|
|
|
if err := c.ShouldBind(&manufacturer); err != nil {
|
2024-06-09 12:58:38 +00:00
|
|
|
c.JSON(http.StatusBadRequest, types.ErrorResponse{Message: err.Error()})
|
|
|
|
return
|
2024-06-06 07:56:17 +00:00
|
|
|
}
|
|
|
|
controllers.EditManufacture(c, manufacturer)
|
|
|
|
})
|
|
|
|
|
2024-06-09 12:58:38 +00:00
|
|
|
|
|
|
|
|
2024-06-06 09:32:23 +00:00
|
|
|
r.POST("/registration", func(c *gin.Context) {
|
2024-06-07 12:52:09 +00:00
|
|
|
var form types.RegisterRequest
|
2024-06-06 16:33:15 +00:00
|
|
|
if err := c.ShouldBind(&form); err != nil {
|
2024-06-09 12:58:38 +00:00
|
|
|
c.JSON(http.StatusBadRequest, types.ErrorResponse{Message: err.Error()})
|
2024-06-07 12:52:09 +00:00
|
|
|
return
|
2024-06-06 09:32:23 +00:00
|
|
|
}
|
2024-06-06 16:33:15 +00:00
|
|
|
controllers.RegisterUser(c, form)
|
|
|
|
})
|
|
|
|
|
2024-06-09 12:58:38 +00:00
|
|
|
|
|
|
|
|
2024-06-06 16:33:15 +00:00
|
|
|
r.POST("/login", func(c *gin.Context) {
|
|
|
|
var register types.LoginRequest
|
|
|
|
if err := c.ShouldBind(®ister); err != nil {
|
2024-06-09 12:58:38 +00:00
|
|
|
c.JSON(http.StatusBadRequest, types.ErrorResponse{Message: err.Error()})
|
2024-06-07 12:52:09 +00:00
|
|
|
return
|
2024-06-06 16:33:15 +00:00
|
|
|
}
|
|
|
|
controllers.LoginUser(c, register)
|
|
|
|
})
|
2024-06-09 12:58:38 +00:00
|
|
|
|
|
|
|
|
2024-06-06 16:50:39 +00:00
|
|
|
r.GET("/user", func(c *gin.Context) {
|
2024-06-07 12:52:09 +00:00
|
|
|
controllers.GetUser(c)
|
2024-06-06 16:50:39 +00:00
|
|
|
})
|
2024-06-06 16:33:15 +00:00
|
|
|
|
2024-06-09 12:58:38 +00:00
|
|
|
|
|
|
|
|
2024-06-07 12:52:09 +00:00
|
|
|
r.PATCH("/user", func(c *gin.Context) {
|
|
|
|
var user types.EditUserNameRequest
|
2024-06-06 16:33:15 +00:00
|
|
|
if err := c.ShouldBind(&user); err != nil {
|
2024-06-09 12:58:38 +00:00
|
|
|
c.JSON(http.StatusBadRequest, types.ErrorResponse{Message: err.Error()})
|
|
|
|
return
|
2024-06-06 16:33:15 +00:00
|
|
|
}
|
2024-06-07 12:52:09 +00:00
|
|
|
controllers.EditUserName(c, user)
|
2024-06-06 16:33:15 +00:00
|
|
|
})
|
|
|
|
|
2024-06-09 12:58:38 +00:00
|
|
|
|
|
|
|
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)
|
2024-06-07 12:52:09 +00:00
|
|
|
})
|
|
|
|
|
2024-06-09 12:58:38 +00:00
|
|
|
|
2024-06-07 12:52:09 +00:00
|
|
|
r.GET("/user/products", func(c *gin.Context) {
|
|
|
|
controllers.GetBuyedProducts(c)
|
2024-06-06 09:32:23 +00:00
|
|
|
})
|
2024-06-06 16:33:15 +00:00
|
|
|
|
2024-06-05 15:53:24 +00:00
|
|
|
err := r.Run()
|
|
|
|
if err != nil {
|
|
|
|
return
|
|
|
|
}
|
2024-06-05 08:43:05 +00:00
|
|
|
|
|
|
|
defer func() {
|
|
|
|
db := database.Connector()
|
|
|
|
sqlDB, err := db.DB()
|
|
|
|
if err != nil {
|
|
|
|
log.Fatal(err)
|
|
|
|
}
|
2024-06-05 15:53:24 +00:00
|
|
|
|
|
|
|
err = sqlDB.Close()
|
|
|
|
if err != nil {
|
2024-06-05 08:43:05 +00:00
|
|
|
log.Println(err)
|
|
|
|
}
|
|
|
|
}()
|
|
|
|
|
|
|
|
}
|
2024-06-09 12:58:38 +00:00
|
|
|
|