| 2279 | } |
| 2280 | |
| 2281 | func (dbResource *DbResource) GetIdToObject(typeName string, id int64, transaction *sqlx.Tx) (map[string]interface{}, error) { |
| 2282 | //key := fmt.Sprintf("ito-%v-%v", typeName, id) |
| 2283 | //if OlricCache != nil { |
| 2284 | // val, err := OlricCache.Get(key) |
| 2285 | // if err == nil && val != nil { |
| 2286 | // return val.(map[string]interface{}), nil |
| 2287 | // } |
| 2288 | //} |
| 2289 | s, q, err := statementbuilder.Squirrel.Select(goqu.C("*")).Prepared(true).From(typeName).Where(goqu.Ex{"id": id}).ToSQL() |
| 2290 | if err != nil { |
| 2291 | return nil, err |
| 2292 | } |
| 2293 | |
| 2294 | stmt1, err := transaction.Preparex(s) |
| 2295 | defer func(stmt1 *sqlx.Stmt) { |
| 2296 | err := stmt1.Close() |
| 2297 | if err != nil { |
| 2298 | log.Errorf("failed to close prepared statement: %v", err) |
| 2299 | } |
| 2300 | }(stmt1) |
| 2301 | |
| 2302 | if err != nil { |
| 2303 | log.Errorf("[1146] failed to prepare statment - [%v]: %v", s, err) |
| 2304 | return nil, err |
| 2305 | } |
| 2306 | |
| 2307 | row, err := stmt1.Queryx(q...) |
| 2308 | |
| 2309 | defer func(row *sqlx.Rows) { |
| 2310 | err := row.Close() |
| 2311 | if err != nil { |
| 2312 | log.Errorf("[1029] failed to close result after value scan in defer") |
| 2313 | } |
| 2314 | }(row) |
| 2315 | |
| 2316 | if err != nil { |
| 2317 | return nil, err |
| 2318 | } |
| 2319 | |
| 2320 | start := time.Now() |
| 2321 | responseArray, err := RowsToMap(row, dbResource.model.GetName()) |
| 2322 | err = row.Close() |
| 2323 | if err != nil { |
| 2324 | log.Errorf("[1064] failed to close result after value scan in defer") |
| 2325 | } |
| 2326 | err = stmt1.Close() |
| 2327 | if err != nil { |
| 2328 | log.Errorf("failed to close prepared statement: %v", err) |
| 2329 | } |
| 2330 | |
| 2331 | m, _, err := dbResource.ResultToArrayOfMapWithTransaction(responseArray, dbResource.Cruds[typeName].model.GetColumnMap(), nil, transaction) |
| 2332 | duration := time.Since(start) |
| 2333 | log.Tracef("[TIMING] GetIdToObject ResultToArray: %v", duration) |
| 2334 | |
| 2335 | if len(m) == 0 { |
| 2336 | log.Printf("[2082] No result found for [%v][%v]", typeName, id) |
| 2337 | return nil, err |
| 2338 | } |