2026-05-03 22:58:12 +08:00
|
|
|
package db_test
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"testing"
|
2026-05-09 14:54:55 +08:00
|
|
|
"apigo.cc/go/cast"
|
2026-05-03 22:58:12 +08:00
|
|
|
"apigo.cc/go/db"
|
2026-05-14 00:35:47 +08:00
|
|
|
"apigo.cc/go/file"
|
2026-05-09 14:54:55 +08:00
|
|
|
"apigo.cc/go/log"
|
2026-05-03 22:58:12 +08:00
|
|
|
_ "modernc.org/sqlite"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func TestGenericQuery(t *testing.T) {
|
2026-05-09 14:54:55 +08:00
|
|
|
db.ResetAllForTest()
|
|
|
|
|
dbPath := "./test_generic.db"
|
2026-05-14 00:35:47 +08:00
|
|
|
file.Remove(dbPath)
|
2026-05-09 14:54:55 +08:00
|
|
|
|
|
|
|
|
db.SetConfigForTest("test_generic", &db.Config{Type: "sqlite", Host: dbPath})
|
|
|
|
|
dbInst := db.GetDB("test_generic", log.DefaultLogger)
|
2026-05-03 22:58:12 +08:00
|
|
|
if dbInst == nil {
|
|
|
|
|
t.Fatal("Failed to get DB")
|
|
|
|
|
}
|
2026-05-09 14:54:55 +08:00
|
|
|
defer func() {
|
|
|
|
|
dbInst.Destroy()
|
2026-05-14 00:35:47 +08:00
|
|
|
file.Remove(dbPath)
|
2026-05-09 14:54:55 +08:00
|
|
|
}()
|
2026-05-03 22:58:12 +08:00
|
|
|
|
2026-05-09 14:54:55 +08:00
|
|
|
r := dbInst.Query("SELECT 1 as num, 'hello' as str")
|
|
|
|
|
res := r.MapOnR1()
|
|
|
|
|
if cast.To[int](res["num"]) != 1 || cast.To[string](res["str"]) != "hello" {
|
|
|
|
|
t.Errorf("cast.To failed, got %v", res)
|
|
|
|
|
}
|
2026-05-03 22:58:12 +08:00
|
|
|
}
|