func count(engine *xorm.Engine, t *testing.T) { user := Userinfo{Departname: "dev"} total, err := engine.Count(&user) if err != nil { t.Error(err) panic(err) } fmt.Printf("Total %d records!!!\n", total) }
func test(engine *xorm.Engine) { err := engine.CreateTables(u) if err != nil { fmt.Println(err) return } engine.ShowSQL = true engine.SetMaxOpenConns(5) size := 1000 queue := make(chan int, size) for i := 0; i < size; i++ { go func(x int) { //x := i err := engine.Ping() if err != nil { fmt.Println(err) } else { /*err = engine.Map(u) if err != nil { fmt.Println("Map user failed") } else {*/ for j := 0; j < 10; j++ { if x+j < 2 { _, err = engine.Get(u) } else if x+j < 4 { users := make([]User, 0) err = engine.Find(&users) } else if x+j < 8 { _, err = engine.Count(u) } else if x+j < 16 { _, err = engine.Insert(&User{Name: "xlw"}) } else if x+j < 32 { _, err = engine.Id(1).Delete(u) } if err != nil { fmt.Println(err) queue <- x return } } fmt.Printf("%v success!\n", x) //} } queue <- x }(i) } for i := 0; i < size; i++ { <-queue } fmt.Println("end") }
func transaction(engine *xorm.Engine, t *testing.T) { counter := func() { total, err := engine.Count(&Userinfo{}) if err != nil { t.Error(err) } fmt.Printf("----now total %v records\n", total) } counter() //defer counter() session := engine.NewSession() defer session.Close() err := session.Begin() if err != nil { t.Error(err) panic(err) return } user1 := Userinfo{Username: "******", Departname: "dev", Alias: "lunny", Created: time.Now()} _, err = session.Insert(&user1) if err != nil { session.Rollback() t.Error(err) panic(err) return } user2 := Userinfo{Username: "******"} _, err = session.Where("(id) = ?", 0).Update(&user2) if err != nil { session.Rollback() fmt.Println(err) //t.Error(err) return } _, err = session.Delete(&user2) if err != nil { session.Rollback() t.Error(err) panic(err) return } err = session.Commit() if err != nil { t.Error(err) panic(err) return } // panic(err) !nashtsai! should remove this }
func test(engine *xorm.Engine) { err := engine.CreateTables(u) if err != nil { fmt.Println(err) return } size := 100 queue := make(chan int, size) for i := 0; i < size; i++ { go func(x int) { //x := i err := engine.Ping() if err != nil { fmt.Println(err) } else { /*err = engine.(u) if err != nil { fmt.Println("Map user failed") } else {*/ for j := 0; j < 10; j++ { if x+j < 2 { _, err = engine.Get(u) } else if x+j < 4 { users := make([]User, 0) err = engine.Find(&users) } else if x+j < 8 { _, err = engine.Count(u) } else if x+j < 16 { _, err = engine.Insert(&User{Name: "xlw"}) } else if x+j < 32 { _, err = engine.Id(1).Delete(u) } if err != nil { fmt.Println(err) queue <- x return } } fmt.Printf("%v success!\n", x) //} } queue <- x }(i) } for i := 0; i < size; i++ { <-queue } //conns := atomic.LoadInt32(&xorm.ConnectionNum) //fmt.Println("connection number:", conns) fmt.Println("end") }
func combineTransactionSameMapper(engine *xorm.Engine, t *testing.T) { counter := func() { total, err := engine.Count(&Userinfo{}) if err != nil { t.Error(err) } fmt.Printf("----now total %v records\n", total) } counter() defer counter() session := engine.NewSession() defer session.Close() err := session.Begin() if err != nil { t.Error(err) panic(err) return } user1 := Userinfo{Username: "******", Departname: "dev", Alias: "lunny", Created: time.Now()} _, err = session.Insert(&user1) if err != nil { session.Rollback() t.Error(err) panic(err) return } user2 := Userinfo{Username: "******"} _, err = session.Where("(id) = ?", 0).Update(&user2) if err != nil { session.Rollback() t.Error(err) panic(err) return } _, err = session.Exec("delete from `Userinfo` where `Username` = ?", user2.Username) if err != nil { session.Rollback() t.Error(err) panic(err) return } err = session.Commit() if err != nil { t.Error(err) panic(err) } }
func testUseBool(engine *xorm.Engine, t *testing.T) { cnt1, err := engine.Count(&Userinfo{}) if err != nil { t.Error(err) panic(err) } users := make([]Userinfo, 0) err = engine.Find(&users) if err != nil { t.Error(err) panic(err) } var fNumber int64 for _, u := range users { if u.IsMan == false { fNumber += 1 } } cnt2, err := engine.UseBool().Update(&Userinfo{IsMan: true}) if err != nil { t.Error(err) panic(err) } if fNumber != cnt2 { fmt.Println("cnt1", cnt1, "fNumber", fNumber, "cnt2", cnt2) /*err = errors.New("Updated number is not corrected.") t.Error(err) panic(err)*/ } _, err = engine.Update(&Userinfo{IsMan: true}) if err == nil { err = errors.New("error condition") t.Error(err) panic(err) } }
func updateSameMapper(engine *xorm.Engine, t *testing.T) { var ori Userinfo has, err := engine.Get(&ori) if err != nil { t.Error(err) panic(err) } if !has { t.Error(errors.New("not exist")) panic(errors.New("not exist")) } // update by id user := Userinfo{Username: "******", Height: 1.2} cnt, err := engine.Id(ori.Uid).Update(&user) if err != nil { t.Error(err) panic(err) } if cnt != 1 { err = errors.New("update not returned 1") t.Error(err) panic(err) return } condi := Condi{"Username": "******", "Departname": ""} cnt, err = engine.Table(&user).Id(ori.Uid).Update(&condi) if err != nil { t.Error(err) panic(err) } if cnt != 1 { err = errors.New("update not returned 1") t.Error(err) panic(err) return } cnt, err = engine.Update(&Userinfo{Username: "******"}, &user) if err != nil { t.Error(err) panic(err) } total, err := engine.Count(&user) if err != nil { t.Error(err) panic(err) } if cnt != total { err = errors.New("insert not returned 1") t.Error(err) panic(err) return } err = engine.Sync(&Article{}) if err != nil { t.Error(err) panic(err) } defer func() { err = engine.DropTables(&Article{}) if err != nil { t.Error(err) panic(err) } }() a := &Article{0, "1", "2", "3", "4", "5", 2} cnt, err = engine.Insert(a) if err != nil { t.Error(err) panic(err) } if cnt != 1 { err = errors.New(fmt.Sprintf("insert not returned 1 but %d", cnt)) t.Error(err) panic(err) } if a.Id == 0 { err = errors.New("insert returned id is 0") t.Error(err) panic(err) } cnt, err = engine.Id(a.Id).Update(&Article{Name: "6"}) if err != nil { t.Error(err) panic(err) } if cnt != 1 { err = errors.New(fmt.Sprintf("insert not returned 1 but %d", cnt)) t.Error(err) panic(err) return } col1 := &UpdateAllCols{} err = engine.Sync(col1) if err != nil { t.Error(err) panic(err) } _, err = engine.Insert(col1) if err != nil { t.Error(err) panic(err) } col2 := &UpdateAllCols{col1.Id, true, "", nil} _, err = engine.Id(col2.Id).AllCols().Update(col2) if err != nil { t.Error(err) panic(err) } col3 := &UpdateAllCols{} has, err = engine.Id(col2.Id).Get(col3) if err != nil { t.Error(err) panic(err) } if !has { err = errors.New(fmt.Sprintf("cannot get id %d", col2.Id)) t.Error(err) panic(err) return } if *col2 != *col3 { err = errors.New(fmt.Sprintf("col2 should eq col3")) t.Error(err) panic(err) return } { col1 := &UpdateMustCols{} err = engine.Sync(col1) if err != nil { t.Error(err) panic(err) } _, err = engine.Insert(col1) if err != nil { t.Error(err) panic(err) } col2 := &UpdateMustCols{col1.Id, true, ""} boolStr := engine.ColumnMapper.Obj2Table("Bool") stringStr := engine.ColumnMapper.Obj2Table("String") _, err = engine.Id(col2.Id).MustCols(boolStr, stringStr).Update(col2) if err != nil { t.Error(err) panic(err) } col3 := &UpdateMustCols{} has, err := engine.Id(col2.Id).Get(col3) if err != nil { t.Error(err) panic(err) } if !has { err = errors.New(fmt.Sprintf("cannot get id %d", col2.Id)) t.Error(err) panic(err) return } if *col2 != *col3 { err = errors.New(fmt.Sprintf("col2 should eq col3")) t.Error(err) panic(err) return } } { col1 := &UpdateIncr{} err = engine.Sync(col1) if err != nil { t.Error(err) panic(err) } _, err = engine.Insert(col1) if err != nil { t.Error(err) panic(err) } cnt, err := engine.Id(col1.Id).Incr("`Cnt`").Update(col1) if err != nil { t.Error(err) panic(err) } if cnt != 1 { err = errors.New("update incr failed") t.Error(err) panic(err) } newCol := new(UpdateIncr) has, err := engine.Id(col1.Id).Get(newCol) if err != nil { t.Error(err) panic(err) } if !has { err = errors.New("has incr failed") t.Error(err) panic(err) } if 1 != newCol.Cnt { err = errors.New("incr failed") t.Error(err) panic(err) } } }
func update(engine *xorm.Engine, t *testing.T) { var ori Userinfo has, err := engine.Get(&ori) if err != nil { t.Error(err) panic(err) } if !has { t.Error(errors.New("not exist")) panic(errors.New("not exist")) } // update by id user := Userinfo{Username: "******", Height: 1.2} cnt, err := engine.Id(ori.Uid).Update(&user) if err != nil { t.Error(err) panic(err) } if cnt != 1 { err = errors.New("update not returned 1") t.Error(err) panic(err) return } condi := Condi{"username": "******", "departname": ""} cnt, err = engine.Table(&user).Id(ori.Uid).Update(&condi) if err != nil { t.Error(err) panic(err) } if cnt != 1 { err = errors.New("update not returned 1") t.Error(err) panic(err) return } cnt, err = engine.Update(&Userinfo{Username: "******"}, &user) if err != nil { t.Error(err) panic(err) } total, err := engine.Count(&user) if err != nil { t.Error(err) panic(err) } if cnt != total { err = errors.New("insert not returned 1") t.Error(err) panic(err) return } // nullable update { user := &Userinfo{Username: "******", Height: 180.5} _, err := engine.Insert(user) if err != nil { t.Error(err) panic(err) } userID := user.Uid has, err := engine.Id(userID). And("username = ?", user.Username). And("height = ?", user.Height). And("departname = ?", ""). And("detail_id = ?", 0). And("is_man = ?", 0). And("created IS NOT NULL"). Get(&Userinfo{}) if err != nil { t.Error(err) panic(err) } if !has { err = errors.New("cannot insert properly") t.Error(err) panic(err) } updatedUser := &Userinfo{Username: "******"} cnt, err = engine.Id(userID). Nullable("height", "departname", "is_man", "created"). Update(updatedUser) if err != nil { t.Error(err) panic(err) } if cnt != 1 { err = errors.New("update not returned 1") t.Error(err) panic(err) } has, err = engine.Id(userID). And("username = ?", updatedUser.Username). And("height IS NULL"). And("departname IS NULL"). And("is_man IS NULL"). And("created IS NULL"). And("detail_id = ?", 0). Get(&Userinfo{}) if err != nil { t.Error(err) panic(err) } if !has { err = errors.New("cannot update with null properly") t.Error(err) panic(err) } cnt, err = engine.Id(userID).Delete(&Userinfo{}) if err != nil { t.Error(err) panic(err) } if cnt != 1 { err = errors.New("delete not returned 1") t.Error(err) panic(err) } } err = engine.StoreEngine("Innodb").Sync2(&Article{}) if err != nil { t.Error(err) panic(err) } defer func() { err = engine.DropTables(&Article{}) if err != nil { t.Error(err) panic(err) } }() a := &Article{0, "1", "2", "3", "4", "5", 2} cnt, err = engine.Insert(a) if err != nil { t.Error(err) panic(err) } if cnt != 1 { err = errors.New(fmt.Sprintf("insert not returned 1 but %d", cnt)) t.Error(err) panic(err) } if a.Id == 0 { err = errors.New("insert returned id is 0") t.Error(err) panic(err) } cnt, err = engine.Id(a.Id).Update(&Article{Name: "6"}) if err != nil { t.Error(err) panic(err) } if cnt != 1 { err = errors.New(fmt.Sprintf("insert not returned 1 but %d", cnt)) t.Error(err) panic(err) return } var s = "test" col1 := &UpdateAllCols{Ptr: &s} err = engine.Sync(col1) if err != nil { t.Error(err) panic(err) } _, err = engine.Insert(col1) if err != nil { t.Error(err) panic(err) } col2 := &UpdateAllCols{col1.Id, true, "", nil} _, err = engine.Id(col2.Id).AllCols().Update(col2) if err != nil { t.Error(err) panic(err) } col3 := &UpdateAllCols{} has, err = engine.Id(col2.Id).Get(col3) if err != nil { t.Error(err) panic(err) } if !has { err = errors.New(fmt.Sprintf("cannot get id %d", col2.Id)) t.Error(err) panic(err) return } if *col2 != *col3 { err = errors.New(fmt.Sprintf("col2 should eq col3")) t.Error(err) panic(err) return } { col1 := &UpdateMustCols{} err = engine.Sync(col1) if err != nil { t.Error(err) panic(err) } _, err = engine.Insert(col1) if err != nil { t.Error(err) panic(err) } col2 := &UpdateMustCols{col1.Id, true, ""} boolStr := engine.ColumnMapper.Obj2Table("Bool") stringStr := engine.ColumnMapper.Obj2Table("String") _, err = engine.Id(col2.Id).MustCols(boolStr, stringStr).Update(col2) if err != nil { t.Error(err) panic(err) } col3 := &UpdateMustCols{} has, err := engine.Id(col2.Id).Get(col3) if err != nil { t.Error(err) panic(err) } if !has { err = errors.New(fmt.Sprintf("cannot get id %d", col2.Id)) t.Error(err) panic(err) return } if *col2 != *col3 { err = errors.New(fmt.Sprintf("col2 should eq col3")) t.Error(err) panic(err) return } } { col1 := &UpdateIncr{} err = engine.Sync(col1) if err != nil { t.Error(err) panic(err) } _, err = engine.Insert(col1) if err != nil { t.Error(err) panic(err) } cnt, err := engine.Id(col1.Id).Incr("cnt").Update(col1) if err != nil { t.Error(err) panic(err) } if cnt != 1 { err = errors.New("update incr failed") t.Error(err) panic(err) } newCol := new(UpdateIncr) has, err := engine.Id(col1.Id).Get(newCol) if err != nil { t.Error(err) panic(err) } if !has { err = errors.New("has incr failed") t.Error(err) panic(err) } if 1 != newCol.Cnt { err = fmt.Errorf("incr failed %v %v %v", newCol.Cnt, newCol, col1) t.Error(err) panic(err) } } testUpdateUpdated(engine, t) }