From 5a0ee4c3fe2ffa1577cf2abf6fdb2486e9bc2bf5 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Wed, 28 Jul 2021 22:26:48 +0800 Subject: [PATCH] exec with driver.Valuer --- integrations/session_raw_test.go | 39 ++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/integrations/session_raw_test.go b/integrations/session_raw_test.go index 36677683..ea18a94d 100644 --- a/integrations/session_raw_test.go +++ b/integrations/session_raw_test.go @@ -5,6 +5,7 @@ package integrations import ( + "database/sql/driver" "strconv" "testing" "time" @@ -65,3 +66,41 @@ func TestExecTime(t *testing.T) { assert.True(t, has) assert.EqualValues(t, now.In(testEngine.GetTZLocation()).Format("2006-01-02 15:04:05"), uet.Created.Format("2006-01-02 15:04:05")) } + +var _ driver.Valuer = &MyData{} + +type MyData struct { + data string +} + +func (m *MyData) Value() (driver.Value, error) { + return m.data, nil +} + +func TestExecDriverValuer(t *testing.T) { + assert.NoError(t, PrepareEngine()) + + type UserinfoDriverValuer struct { + Uid int + Name string + Data string + } + + assert.NoError(t, testEngine.Sync2(new(UserinfoDriverValuer))) + + res, err := testEngine.Exec("INSERT INTO "+testEngine.TableName("`userinfo_driver_valuer`", true)+" (uid, name,data) VALUES (?, ?, ?)", + 1, "user", MyData{"data"}) + assert.NoError(t, err) + cnt, err := res.RowsAffected() + assert.NoError(t, err) + assert.EqualValues(t, 1, cnt) + + results, err := testEngine.QueryString("select * from " + testEngine.TableName("userinfo_exec", true)) + assert.NoError(t, err) + assert.EqualValues(t, 1, len(results)) + id, err := strconv.Atoi(results[0]["uid"]) + assert.NoError(t, err) + assert.EqualValues(t, 1, id) + assert.Equal(t, "user", results[0]["name"]) + assert.EqualValues(t, "data", results[0]["data"]) +}