MCPcopy
hub / github.com/daptin/daptin / GetIdToObjectWithTransaction

Method GetIdToObjectWithTransaction

server/resource/dbmethods.go:2347–2416  ·  view source on GitHub ↗
(typeName string, id int64, transaction *sqlx.Tx)

Source from the content-addressed store, hash-verified

2345}
2346
2347func (dbResource *DbResource) GetIdToObjectWithTransaction(typeName string, id int64, transaction *sqlx.Tx) (map[string]interface{}, error) {
2348 key := fmt.Sprintf("ito-%v-%v", typeName, id)
2349 if OlricCache != nil {
2350 val, err := OlricCache.Get(context.Background(), key)
2351 if err == nil && val != nil {
2352 var res map[string]interface{}
2353 err = val.Scan(res)
2354 return res, err
2355 }
2356 }
2357 s, q, err := statementbuilder.Squirrel.Select(goqu.C("*")).Prepared(true).From(typeName).Where(goqu.Ex{"id": id}).ToSQL()
2358 if err != nil {
2359 return nil, err
2360 }
2361
2362 stmt1, err := transaction.Preparex(s)
2363
2364 if err != nil {
2365 log.Errorf("[1146] failed to prepare statment - [%v]: %v", s, err)
2366 return nil, err
2367 }
2368 defer func(stmt1 *sqlx.Stmt) {
2369 err := stmt1.Close()
2370 if err != nil {
2371 log.Errorf("failed to close prepared statement: %v", err)
2372 }
2373 }(stmt1)
2374
2375 row, err := stmt1.Queryx(q...)
2376
2377 if err != nil {
2378 return nil, err
2379 }
2380 defer func(row *sqlx.Rows) {
2381 err := row.Close()
2382 if err != nil {
2383 log.Errorf("[1029] failed to close result after value scan in defer")
2384 }
2385 }(row)
2386
2387 start := time.Now()
2388 responseArray, err := RowsToMap(row, dbResource.model.GetName())
2389 err = row.Close()
2390 if err != nil {
2391 log.Errorf("[1064] failed to close result after value scan in defer")
2392 return nil, err
2393 }
2394 err = stmt1.Close()
2395 if err != nil {
2396 log.Errorf("failed to close prepared statement: %v", err)
2397 return nil, err
2398 }
2399 m, _, err := dbResource.ResultToArrayOfMapWithTransaction(responseArray, dbResource.Cruds[typeName].model.GetColumnMap(), nil, transaction)
2400 if err != nil {
2401 return nil, err
2402 }
2403 duration := time.Since(start)
2404 log.Tracef("[TIMING] GetIdToObject ResultToArray: %v", duration)

Callers 4

FindOneMethod · 0.95
UpdateWithoutFiltersMethod · 0.95

Calls 9

RowsToMapFunction · 0.85
ScanMethod · 0.80
QueryxMethod · 0.80
GetNameMethod · 0.80
GetMethod · 0.65
SelectMethod · 0.65
PreparexMethod · 0.65
CloseMethod · 0.65

Tested by

no test coverage detected