98 lines
1.9 KiB
Go
98 lines
1.9 KiB
Go
package db
|
||
|
||
import (
|
||
"fmt"
|
||
"strings"
|
||
"testing"
|
||
)
|
||
|
||
func testCreateClickHouse(_ *testing.T) *ClickHouseRepo {
|
||
host := "192.168.2.224"
|
||
port := "9000"
|
||
// port = 8123
|
||
username := "default"
|
||
password := "123456"
|
||
database := "samba"
|
||
return NewClickHouseRepo(host, port, username, password, database)
|
||
}
|
||
|
||
func testSelect(t *testing.T) {
|
||
ch := testCreateClickHouse(t)
|
||
err := ch.Open()
|
||
if err != nil {
|
||
t.Fatal(err)
|
||
}
|
||
defer ch.Close()
|
||
rows, err := ch.Select("select user_id, coins from coins_flow limit 1")
|
||
if err != nil {
|
||
t.Fatal(err)
|
||
}
|
||
defer func() { _ = rows.Close() }()
|
||
cols, err := rows.Columns()
|
||
if err != nil {
|
||
t.Fatal(err)
|
||
}
|
||
fmt.Println(strings.Join(cols, ","))
|
||
// 一行数据,使用any,避开数据类型问题
|
||
var vRows = make([]any, len(cols))
|
||
// 存实际的值,byte数组,长度以列的数量为准
|
||
var values = make([][]byte, len(cols))
|
||
for i := 0; i < len(cols); i++ {
|
||
vRows[i] = &values[i]
|
||
}
|
||
for rows.Next() {
|
||
err = rows.Scan(vRows...)
|
||
if err != nil {
|
||
fmt.Println(err.Error())
|
||
break
|
||
}
|
||
var vString []string
|
||
for _, v := range values {
|
||
vString = append(vString, string(v))
|
||
}
|
||
fmt.Println(vString, ",")
|
||
}
|
||
}
|
||
|
||
func testInsert(t *testing.T) {
|
||
ch := testCreateClickHouse(t)
|
||
err := ch.Open()
|
||
if err != nil {
|
||
t.Fatal(err)
|
||
}
|
||
defer ch.Close()
|
||
_, err = ch.Exec("INSERT INTO coins_flow(user_id, coins) VALUES (11,11)", 11, 11)
|
||
if err != nil {
|
||
t.Fatal(err)
|
||
}
|
||
// last, err := result.LastInsertId()
|
||
// if err != nil {
|
||
// t.Fatal(err)
|
||
// }
|
||
// fmt.Println(last)
|
||
}
|
||
|
||
func testDelete(t *testing.T) {
|
||
ch := testCreateClickHouse(t)
|
||
err := ch.Open()
|
||
if err != nil {
|
||
t.Fatal(err)
|
||
}
|
||
defer ch.Close()
|
||
_, err = ch.Exec("DELETE FROM coins_flow WHERE user_id = 11 AND coins = 11")
|
||
if err != nil {
|
||
t.Fatal(err)
|
||
}
|
||
// last, err := result.LastInsertId()
|
||
// if err != nil {
|
||
// t.Fatal(err)
|
||
// }
|
||
// fmt.Println(last)
|
||
}
|
||
|
||
func TestClickHouse(t *testing.T) {
|
||
testSelect(t)
|
||
// testInsert(t)
|
||
testDelete(t)
|
||
}
|