MCPcopy
hub / github.com/daptin/daptin / GetIdToObject

Method GetIdToObject

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

Source from the content-addressed store, hash-verified

2279}
2280
2281func (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 }

Callers 2

TestGetIdToObjectFunction · 0.80
ImportDataFilesFunction · 0.80

Calls 7

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

Tested by 1

TestGetIdToObjectFunction · 0.64