From 23032a3688038e209080355b8ef4bc33161bdfc6 Mon Sep 17 00:00:00 2001 From: ravonzz Date: Thu, 6 Jun 2024 12:56:17 +0500 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D1=80=D0=B5=D0=B4=D0=B0=D0=BA=D1=82=D0=B8=D1=80=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=9F=D1=80=D0=BE=D0=B8=D0=B7=D0=B2?= =?UTF-8?q?=D0=BE=D0=B4=D0=B8=D1=82=D0=B5=D0=BB=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/manufacturerController.go | 38 ++++++++++++++++++++++++ golang-test/environments/golang-test.bru | 2 +- main.go | 11 +++++++ types/types.go | 5 ++++ 4 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 types/types.go diff --git a/controllers/manufacturerController.go b/controllers/manufacturerController.go index cb0911a..cc0662b 100644 --- a/controllers/manufacturerController.go +++ b/controllers/manufacturerController.go @@ -6,6 +6,7 @@ import ( "golang-test/database" "golang-test/libs" "golang-test/message" + "golang-test/types" "golang-test/validators" "log" ) @@ -88,3 +89,40 @@ func GetManufacturers(c *gin.Context) { message.SendResponse(c, response) } + +func EditManufacture(c *gin.Context, editedManufacturer types.ManufacturerPatchRequest) { + db := database.Connector() + response := message.Response{Status: 200} + id := c.Param("id") + + validate := validators.Validate + err := validate.Struct(editedManufacturer) + + if err != nil { + response.Error = libs.GetValidationErrors(err.(validator.ValidationErrors)) + response.Status = 400 + message.SendResponse(c, response) + return + } + + var manufacturer database.Manufacturer + + if db.First(&manufacturer, id).Error != nil { + response.Error = gin.H{ + "error": "Manufacturer with id '" + id + "' not found", + } + response.Status = 404 + message.SendResponse(c, response) + return + } + + db.First(&manufacturer, id) + manufacturer.Name = editedManufacturer.Name + db.Save(&manufacturer) + + response.Message = gin.H{ + "message": "Manufacturer edited", + } + + message.SendResponse(c, response) +} diff --git a/golang-test/environments/golang-test.bru b/golang-test/environments/golang-test.bru index 6db2f17..172b2bc 100644 --- a/golang-test/environments/golang-test.bru +++ b/golang-test/environments/golang-test.bru @@ -1,4 +1,4 @@ vars { host: http://localhost:8080 - manufacturerID: 3 + manufacturerID: 1 } diff --git a/main.go b/main.go index 3add00e..da5da86 100644 --- a/main.go +++ b/main.go @@ -5,6 +5,7 @@ import ( "github.com/gin-gonic/gin" "golang-test/controllers" "golang-test/database" + "golang-test/types" "log" "net/http" ) @@ -44,6 +45,16 @@ func main() { controllers.GetManufacturers(c) }) + 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) + }) + err := r.Run() if err != nil { return diff --git a/types/types.go b/types/types.go new file mode 100644 index 0000000..684ff34 --- /dev/null +++ b/types/types.go @@ -0,0 +1,5 @@ +package types + +type ManufacturerPatchRequest struct { + Name string `validate:"required"` +}