Мне нужно сделать обновление для таблицы на PG.В запросе есть несколько столбцов или полей в таблице.Сначала свяжите запрос с экземпляром, но когда я получу объект из БД, затем удалите все данные из запроса.Я предпочитаю проверять данные структуры перед получением данных из базы данных.
package main
import (
"log"
"bitbucket.org/company/app/controllers"
"bitbucket.org/company/gobase/rest"
)
func main() {
server, routes := rest.NewServer(prefixPath)
routes.POST("/data/:id", controllers.Update)
}
Модель
type Data struct {
tableName struct{} `sql:"data"`
ID int `sql:"id,pk" json:"id"`
CreatedAt time.Time `sql:"created_at" json:"created_at"`
Column1 string `sql:"column1" json:"column1"`
Column2 string `sql:"column2" json:"column2"`
Column3 time.Time `sql:"column3" json:"column3"`
}
Контроллер:
func Update(c echo.Context) (err error) {
id, err := strconv.Atoi(c.Param("id"))
if err != nil {
return c.JSON(http.StatusBadRequest, err)
}
data := Data{}
if err = c.Bind(&data); err != nil {
return c.JSON(http.StatusBadRequest, err)
}
err := db().Table("data").
Where("id = ?", id).
Select(&data)
if err != nil {
return c.JSON(http.StatusNotFound, err)
}
, err := db(data).
Where("id = ?", data.ID).
Update(data)
if err != nil {
return c.JSON(http.StatusInternalServerError, err)
}
return c.JSON(http.StatusOK, userSocial)
}
ЕслиСначала я ищу сущность в bd, а затем привязываю запрос к сущности, он отлично работает, он только обновляет поля запроса.Но я предпочитаю проверить структуру запроса перед поиском в базе данных.