MCPcopy
hub / github.com/daptin/daptin / UpdateWithTransaction

Method UpdateWithTransaction

server/resource/resource_update.go:1240–1305  ·  view source on GitHub ↗
(obj interface{}, req api2go.Request, transaction *sqlx.Tx)

Source from the content-addressed store, hash-verified

1238}
1239
1240func (dbResource *DbResource) UpdateWithTransaction(obj interface{}, req api2go.Request, transaction *sqlx.Tx) (api2go.Responder, error) {
1241 data, _ := obj.(api2go.Api2GoModel)
1242 //log.Printf("Update object request: [%v][%v]", dbResource.model.GetTableName(), data.GetID())
1243
1244 updateRequest := &http.Request{
1245 Method: "PATCH",
1246 URL: req.PlainRequest.URL,
1247 }
1248 updateRequest = updateRequest.WithContext(req.PlainRequest.Context())
1249
1250 data.SetType(dbResource.model.GetName())
1251
1252 for _, bf := range dbResource.ms.BeforeUpdate {
1253 //log.Printf("Invoke BeforeUpdate [%v][%v] on FindAll Request", bf.String(), dbResource.model.GetName())
1254
1255 finalData, err := bf.InterceptBefore(dbResource, &api2go.Request{
1256 PlainRequest: updateRequest,
1257 QueryParams: req.QueryParams,
1258 Header: req.Header,
1259 Pagination: req.Pagination,
1260 }, []map[string]interface{}{
1261 data.GetAllAsAttributes(),
1262 }, transaction)
1263 if err != nil {
1264 log.Errorf("Error From BeforeUpdate middleware: %v", err)
1265 return nil, err
1266 }
1267 if len(finalData) == 0 {
1268 return nil, fmt.Errorf("failed to updated this object because of [%v]", bf.String())
1269 }
1270 res := finalData[0]
1271 data.SetAttributes(res)
1272 }
1273
1274 updatedResource, err := dbResource.UpdateWithoutFilters(obj, req, transaction)
1275 log.Tracef("Completed UpdateWithoutFilters in UpdateWithTransaction")
1276
1277 if err != nil {
1278 return NewResponse(nil, nil, 500, nil), err
1279 }
1280
1281 for _, bf := range dbResource.ms.AfterUpdate {
1282 log.Tracef("Invoke AfterUpdate [%v][%v] on FindAll Request", bf.String(), dbResource.model.GetName())
1283
1284 results, err := bf.InterceptAfter(dbResource, &api2go.Request{
1285 PlainRequest: updateRequest,
1286 QueryParams: req.QueryParams,
1287 Header: req.Header,
1288 Pagination: req.Pagination,
1289 }, []map[string]interface{}{updatedResource}, transaction)
1290 if len(results) != 0 {
1291 updatedResource = results[0]
1292
1293 } else {
1294 updatedResource = nil
1295 }
1296
1297 if err != nil {

Callers 6

MakeGraphqlSchemaFunction · 0.80
CreateWithoutFilterMethod · 0.80
UpdateWithoutFiltersMethod · 0.80
ImportDataMapArrayFunction · 0.80
ImportDataStringArrayFunction · 0.80
HandleActionRequestMethod · 0.80

Calls 6

UpdateWithoutFiltersMethod · 0.95
NewResponseFunction · 0.85
GetNameMethod · 0.80
InterceptBeforeMethod · 0.65
StringMethod · 0.65
InterceptAfterMethod · 0.65

Tested by

no test coverage detected