func Test(w rest.ResponseWriter, r *rest.Request) { log.Println("hogehogfukga") ctx := r.Env["context"].(context.Context) // データをselect test := model.Find(3) log.Println(test) // use redis redisTest(ctx) // データをupdate var h *xorm.Engine h = hoge.GetDBShardConnection("user", 1) session := h.NewSession() defer session.Close() var err error err = session.Begin() if checkErr(err, "begin error") { w.WriteJson(err) return } var u []model.User err = session.Where("id = ?", 3).ForUpdate().Find(&u) if checkErr(err, "user not found") { w.WriteJson(err) return } user := u[0] user.Score += 1 time.Sleep(6 * time.Second) //res, e := session.Id(user.Id).Cols("score").Update(&user) // 単一 PK _, err = session.Id(core.PK{user.Id, user.Name}).Update(&user) // 複合PK if checkErr(err, "update error") { w.WriteJson(err) return } err = session.Commit() if checkErr(err, "commit error") { w.WriteJson(err) return } w.WriteJson(user) }
func Test(c *gin.Context) { var json PostJSON err := c.BindJSON(&json) if checkErr(c, err, "json error") { return } ctx := c.Value("gContext").(context.Context) // データをselect model.Find(3) // use redis redisTest(ctx) // データをupdate var h *xorm.Engine h = hoge.GetDBShardConnection("user", 1) session := h.NewSession() defer session.Close() err = session.Begin() if checkErr(c, err, "begin error") { return } var u []model.User err = session.Where("id = ?", 3).ForUpdate().Find(&u) if checkErr(c, err, "user not found") { return } user := u[0] user.Score += 1 //time.Sleep(3 * time.Second) //res, e := session.Id(user.Id).Cols("score").Update(&user) // 単一 PK _, err = session.Id(core.PK{user.Id, user.Name}).Update(&user) // 複合PK if checkErr(c, err, "update error") { return } err = session.Commit() if checkErr(c, err, "commit error") { return } c.JSON(http.StatusOK, &user) }
func Test(w rest.ResponseWriter, r *rest.Request /*ctx context.Context*/) { log.Println("hogehogfukga") ctx := r.Env["context"].(context.Context) str := ctx.Value("test").(string) log.Println(str) db := ctx.Value("DB").(*gorp.DbMap) db.AddTableWithName(model.User{}, "users").SetKeys(false, "Id") // これがないと無理 // データをselect user := model.Find(ctx, db, 3) user.Hoge() // use redis redis_pool := ctx.Value("redis").(*redis.Pool) redis_conn := redis_pool.Get() _, e2 := redis_conn.Do("SET", "message", "this is value") if e2 != nil { log.Fatalln("set message", e2) } s, err := redis.String(redis_conn.Do("GET", "message")) if err != nil { log.Fatalln("get message", err) } fmt.Printf("%#v\n", s) // データをupdate : for updateで呼ぶべき user.Score += 1 log.Println(user) tx, errr := db.Begin() checkErr(errr, "tx error!") res, e := tx.Update(&user) log.Println(res) checkErr(e, "") ee := tx.Commit() checkErr(ee, "commit error!!") tx.Commit() w.WriteJson(user) }