Я пытаюсь создать метод PATCH для моего REST API. Я не могу понять, как я могу взять имя из необработанного поля JSON, чтобы использовать его в качестве параметра в запросе UPDATE, чтобы запрос мог знать, какое поле нужно обновить, потому что, в отличие от PUT, PATCH необходимо обновить только одно поле и не весь ряд в БД. Я использую SQLite3
EDIT:
Код:
func PatchServer(c echo.Context) error {
patchedServer := new(structs.Server)
requestID := c.Param("id")
if err := c.Bind(patchedServer); err != nil {
return err
}
if reflect.TypeOf(patchedServer.Name).Kind() != reflect.String || reflect.TypeOf(patchedServer.Components).Kind() != reflect.Int {
panic("Insert a string or an int")
} else {
sql := "UPDATE servers SET server_name = CASE WHEN ? IS NOT NULL THEN ? END WHERE id = ?"
stmt, err := db.Get().Prepare(sql)
if err != nil {
panic(err)
}
_, err2 := stmt.Exec(patchedServer.Name, patchedServer.Name, requestID)
if err2 != nil {
panic(err2)
}
fmt.Println(patchedServer.ID, patchedServer.Name, patchedServer.Components)
fmt.Println("Requested id: ", requestID)
return c.JSON(http.StatusOK, "Patched!")
}