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"}) }