Go-TestAPI/main.go

141 lines
3.5 KiB
Go
Raw Normal View History

2024-06-05 08:43:05 +00:00
package main
import (
// "fmt"
"github.com/gin-gonic/gin"
"golang-test/controllers"
"golang-test/database"
"golang-test/types"
2024-06-05 08:43:05 +00:00
"log"
"net/http"
)
func main() {
// Создание сервера
2024-06-05 08:43:05 +00:00
r := gin.Default()
//View для создание товара
2024-06-05 08:43:05 +00:00
r.POST("/product", func(c *gin.Context) {
var product database.Product
if err := c.ShouldBind(&product); err != nil {
2024-06-05 08:43:05 +00:00
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
}
controllers.CreateProduct(c, product)
2024-06-05 08:43:05 +00:00
})
//View для удаления товара
r.DELETE("/product/:id", func(c *gin.Context) {
controllers.DeleteProduct(c)
})
//View для просмотра всех продуктов
r.GET("/product", func(c *gin.Context) {
controllers.GetProducts(c)
})
r.GET("/product/:id", func(c *gin.Context) {
controllers.GetProductInfo(c)
})
//View для создания производителя
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 {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
}
controllers.CreateManufacturer(c, manufacturer)
})
//View для удаления производителя
r.DELETE("/manufacturer/:id", func(c *gin.Context) {
controllers.DeleteManufacturer(c)
})
//View получения списка всех производителей
r.GET("/manufacturer", func(c *gin.Context) {
controllers.GetManufacturers(c)
})
//View для редактирования производителя
r.PATCH("/manufacturer/:id", func(c *gin.Context) {
var manufacturer types.ManufacturerPatchRequest
if err := c.ShouldBind(&manufacturer); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
}
controllers.EditManufacture(c, manufacturer)
})
//View для создания пользователя
r.POST("/registration", func(c *gin.Context) {
2024-06-07 12:52:09 +00:00
var form types.RegisterRequest
if err := c.ShouldBind(&form); err != nil {
2024-06-06 15:03:22 +00:00
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
2024-06-07 12:52:09 +00:00
return
}
2024-06-06 15:03:22 +00:00
controllers.RegisterUser(c, form)
})
//View для аутентификации пользователя
r.POST("/login", func(c *gin.Context) {
var register types.LoginRequest
if err := c.ShouldBind(&register); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
2024-06-07 12:52:09 +00:00
return
}
controllers.LoginUser(c, register)
})
//View для получения пользователя
r.GET("/user", func(c *gin.Context) {
var user database.User
if err := c.ShouldBind(&user); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
2024-06-07 12:52:09 +00:00
return
}
2024-06-07 12:52:09 +00:00
controllers.GetUser(c)
})
//View для редактированя пользователя
2024-06-07 12:52:09 +00:00
r.PATCH("/user", func(c *gin.Context) {
var user types.EditUserNameRequest
if err := c.ShouldBind(&user); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
}
2024-06-07 12:52:09 +00:00
controllers.EditUserName(c, user)
})
2024-06-07 12:52:09 +00:00
//View для покупки товара
r.GET("/product/:id/buy", func(c *gin.Context) {
controllers.BuyProduct(c)
})
//View для просмотра купленных товаров
r.GET("/user/products", func(c *gin.Context) {
controllers.GetBuyedProducts(c)
})
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)
}
err = sqlDB.Close()
if err != nil {
2024-06-05 08:43:05 +00:00
log.Println(err)
}
}()
}