// // db_query_test.go // Copyright (C) 2022 tiglog // // Distributed under terms of the MIT license. // package sqldb_test import ( "testing" "time" "git.hexq.cn/tiglog/golib/gtest" "git.hexq.cn/tiglog/golib/gdb/sqldb" ) func dbQueryTest(db *sqldb.Engine, t *testing.T) { query := sqldb.NewQueryBuild("person", db) // query one var p1 Person query.Where("id=?") err := query.One(&p1, 1) gtest.Nil(t, err) gtest.Equal(t, int64(1), p1.Id) // query all var ps1 []Person query = sqldb.NewQueryBuild("person", db) query.Where("id > ?") err = query.All(&ps1, 1) gtest.Nil(t, err) gtest.True(t, len(ps1) > 0) // fmt.Println(ps1) if len(ps1) > 0 { var val int64 = 2 gtest.Equal(t, val, ps1[0].Id) } // insert query = sqldb.NewQueryBuild("person", db) query.AddFields("first_name", "last_name", "email") id, err := query.Insert("三", "张", "zs@bar.com") gtest.Nil(t, err) gtest.Greater(t, int64(0), id) // fmt.Println(id) // named insert query = sqldb.NewQueryBuild("person", db) query.AddFields("first_name", "last_name", "email") row, err := query.NamedInsert(&Person{ FirstName: "四", LastName: "李", Email: "ls@bar.com", AddedAt: time.Now().Unix(), }) gtest.Nil(t, err) gtest.Equal(t, int64(1), row) // update query = sqldb.NewQueryBuild("person", db) query.Where("email=?") n, err := query.Update("first_name=?", "哈哈", "ls@bar.com") gtest.Nil(t, err) gtest.Equal(t, int64(1), n) // named update map query = sqldb.NewQueryBuild("person", db) query.Where("email=:email") n, err = query.NamedUpdate("first_name=:first_name", map[string]interface{}{ "email": "ls@bar.com", "first_name": "中华人民共和国", }) gtest.Nil(t, err) gtest.Equal(t, int64(1), n) // named update struct query = sqldb.NewQueryBuild("person", db) query.Where("email=:email") var p = &Person{ Email: "ls@bar.com", LastName: "中华人民共和国,救民于水火", } n, err = query.NamedUpdate("last_name=:last_name", p) gtest.Nil(t, err) gtest.Equal(t, int64(1), n) // count query = sqldb.NewQueryBuild("person", db) n, err = query.Count() gtest.Nil(t, err) // fmt.Println(n) gtest.Greater(t, int64(0), n) // delete query = sqldb.NewQueryBuild("person", db) n, err = query.Delete() gtest.NotNil(t, err) gtest.Equal(t, int64(0), n) n, err = query.Where("id=?").Delete(2) gtest.Nil(t, err) gtest.Equal(t, int64(1), n) } func TestQuery(t *testing.T) { RunDbTest(t, dbQueryTest) }