103 lines
2.0 KiB
Go
103 lines
2.0 KiB
Go
package db
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
var myConn *Connection
|
|
|
|
func init() {
|
|
database := Open(map[string]DBConfig{
|
|
"mysql": {
|
|
Driver: "mysql",
|
|
Host: "localhost",
|
|
Port: "3366",
|
|
Database: "demo",
|
|
Username: "demo",
|
|
Password: "ded86bf25d661bb723f3898b2440dd678382e2dd",
|
|
Charset: "utf8mb4",
|
|
MultiStatements: true,
|
|
// ParseTime: true,
|
|
},
|
|
})
|
|
|
|
myConn = database.Connection("mysql")
|
|
}
|
|
|
|
func TestScanMapSlice(t *testing.T) {
|
|
dest := []map[string]any{}
|
|
|
|
myConn.Select("select * from fsm", []any{}, &dest)
|
|
|
|
t.Log(dest)
|
|
}
|
|
|
|
func TestScanValues(t *testing.T) {
|
|
|
|
dest := []int{}
|
|
|
|
myConn.Select("select 1 as id", []any{}, &dest)
|
|
|
|
t.Log(dest)
|
|
}
|
|
|
|
func TestScanMap(t *testing.T) {
|
|
|
|
dest := map[string]any{}
|
|
|
|
myConn.Select("select 0 as id, 'test' as code", []any{}, &dest)
|
|
|
|
t.Log(dest)
|
|
}
|
|
|
|
func TestScanStruct(t *testing.T) {
|
|
dest := struct {
|
|
Id int `db:"id"`
|
|
Code string `db:"code"`
|
|
}{}
|
|
|
|
myConn.Select(`select 0 as id, 'test' as code`, []any{}, &dest)
|
|
|
|
t.Log(dest)
|
|
}
|
|
|
|
func TestScanJsonFieldStruct(t *testing.T) {
|
|
|
|
dest := struct {
|
|
Id int `db:"id"`
|
|
Code string `db:"code"`
|
|
Map map[string]any `db:"map"`
|
|
Arr []int64 `db:"arr"`
|
|
}{}
|
|
|
|
myConn.Select(`select 0 as id, NULL as code, '{"a":1}' as map, '[3, 4]' as arr`, []any{}, &dest)
|
|
|
|
t.Log(dest)
|
|
}
|
|
|
|
func TestScanStructSlice(t *testing.T) {
|
|
|
|
dest := []struct {
|
|
Id int `db:"id"`
|
|
Code string `db:"code"`
|
|
}{}
|
|
|
|
myConn.Select("select * from ((select 0 as id, 'test' as code) union (select 1 as id, 'test1' as code)) as t", []any{}, &dest)
|
|
|
|
t.Log(dest)
|
|
}
|
|
|
|
func TestScanJsonFieldStructSlice(t *testing.T) {
|
|
|
|
dest := []struct {
|
|
Id int `db:"id"`
|
|
Code string `db:"code"`
|
|
Map map[string]any `db:"map"`
|
|
Arr []any `db:"arr"`
|
|
}{}
|
|
|
|
myConn.Select(`select * from ((select 0 as id, 'test' as code, '{"a":1}' as map, '[1, 2]' as arr) union (select 1 as id, 'test1' as code, '{"a":2}' as map, '[1, 2]' as arr)) as t`, []any{}, &dest)
|
|
|
|
t.Log(dest)
|
|
}
|