func updateHandler(ctx *fasthttp.RequestCtx) { n := common.GetQueriesCount(ctx) worlds := make([]common.World, n) for i := 0; i < n; i++ { w := &worlds[i] fetchRandomWorld(w) w.RandomNumber = int32(common.RandomWorldNum()) } // sorting is required for insert deadlock prevention. sort.Sort(common.WorldsByID(worlds)) txn, err := db.Begin() if err != nil { log.Fatalf("Error starting transaction: %s", err) } for i := 0; i < n; i++ { w := &worlds[i] if _, err = txn.Exec("worldUpdateStmt", w.RandomNumber, w.Id); err != nil { log.Fatalf("Error updating world row %d: %s", i, err) } } if err = txn.Commit(); err != nil { log.Fatalf("Error when commiting world rows: %s", err) } common.JSONMarshal(ctx, worlds) }
func queriesHandler(ctx *fasthttp.RequestCtx) { n := common.GetQueriesCount(ctx) worlds := make([]common.World, n) for i := 0; i < n; i++ { fetchRandomWorld(&worlds[i]) } common.JSONMarshal(ctx, worlds) }
func dbHandler(ctx *fasthttp.RequestCtx) { var w common.World fetchRandomWorld(&w) common.JSONMarshal(ctx, &w) }