Go-TestAPI/controllers/manufacturerController.go

96 lines
3.5 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 controllers
import (
"golang-test/database"
"golang-test/libs"
"golang-test/types"
"golang-test/validators"
"net/http"
"github.com/gin-gonic/gin"
"github.com/go-playground/validator/v10"
)
// CreateManufacturer создает нового производителя в базе данных.
func CreateManufacturer(c *gin.Context, manufacturer database.Manufacturer) {
db := database.Connector() // Подключение к базе данных
validate := validators.Validate // Валидатор для проверки входных данных
// Валидация структуры производителя
if err := validate.Struct(manufacturer); err != nil {
c.JSON(http.StatusBadRequest, libs.GetValidationErrors(err.(validator.ValidationErrors)))
return
}
// Добавление производителя в базу данных
if err := db.Create(&manufacturer).Error; err != nil {
c.JSON(http.StatusBadRequest, types.ErrorResponse{Message: err.Error()})
return
}
c.JSON(http.StatusCreated, types.MessageResponse{Message: "Manufacturer created successfully"})
}
// DeleteManufacturer удаляет производителя из базы данных по ID.
func DeleteManufacturer(c *gin.Context) {
db := database.Connector() // Подключение к базе данных
id := c.Param("id") // Получение ID из параметров запроса
var manufacturer database.Manufacturer
// Поиск производителя по ID
if db.First(&manufacturer, id).Error != nil {
c.JSON(http.StatusNotFound, types.NotFoundError("Manufacturer", id))
return
}
// Удаление производителя
if err := db.Delete(&manufacturer, id).Error; err != nil {
c.JSON(http.StatusBadRequest, types.ErrorResponse{Message: err.Error()})
return
}
c.JSON(http.StatusOK, types.MessageResponse{Message: "Manufacturer deleted successfully"})
}
// GetManufacturers возвращает список всех производителей.
func GetManufacturers(c *gin.Context) {
db := database.Connector() // Подключение к базе данных
var manufacturers []types.ManufacturerResponse
// Получение списка производителей
if err := db.Model(&database.Manufacturer{}).Select("ID", "Name").Scan(&manufacturers).Error; err != nil {
c.JSON(http.StatusBadRequest, types.ErrorResponse{Message: err.Error()})
return
}
c.JSON(http.StatusOK, manufacturers)
}
// EditManufacture редактирует информацию о производителе.
func EditManufacture(c *gin.Context, editedManufacturer types.ManufacturerPatchRequest) {
db := database.Connector() // Подключение к базе данных
id := c.Param("id") // Получение ID из параметров запроса
var manufacturer database.Manufacturer
validate := validators.Validate // Валидатор для проверки входных данных
// Валидация измененных данных
if err := validate.Struct(editedManufacturer); err != nil {
c.JSON(http.StatusBadRequest, libs.GetValidationErrors(err.(validator.ValidationErrors)))
return
}
// Поиск и обновление данных производителя
if db.First(&manufacturer, id).Error != nil {
c.JSON(http.StatusNotFound, types.NotFoundError("Manufacturer", id))
return
}
manufacturer.Name = editedManufacturer.Name
db.Save(&manufacturer)
c.JSON(http.StatusOK, types.MessageResponse{Message: "Manufacturer edited successfully"})
}