(typeName string, id int64, transaction *sqlx.Tx)
| 2345 | } |
| 2346 | |
| 2347 | func (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) |
no test coverage detected