mirror of
https://gitee.com/johng/gf.git
synced 2024-12-02 04:07:47 +08:00
107 lines
3.4 KiB
Go
107 lines
3.4 KiB
Go
// Copyright GoFrame Author(https://goframe.org). All Rights Reserved.
|
|
//
|
|
// This Source Code Form is subject to the terms of the MIT License.
|
|
// If a copy of the MIT was not distributed with this file,
|
|
// You can obtain one at https://github.com/gogf/gf.
|
|
|
|
package pgsql_test
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/gogf/gf/v2/database/gdb"
|
|
"github.com/gogf/gf/v2/frame/g"
|
|
"github.com/gogf/gf/v2/os/gctx"
|
|
"github.com/gogf/gf/v2/test/gtest"
|
|
|
|
"github.com/gogf/gf/contrib/drivers/pgsql/v2"
|
|
)
|
|
|
|
func Test_LastInsertId(t *testing.T) {
|
|
// err not nil
|
|
gtest.C(t, func(t *gtest.T) {
|
|
_, err := db.Model("notexist").Insert(g.List{
|
|
{"name": "user1"},
|
|
{"name": "user2"},
|
|
{"name": "user3"},
|
|
})
|
|
t.AssertNE(err, nil)
|
|
})
|
|
|
|
gtest.C(t, func(t *gtest.T) {
|
|
tableName := createTable()
|
|
defer dropTable(tableName)
|
|
res, err := db.Model(tableName).Insert(g.List{
|
|
{"passport": "user1", "password": "pwd", "nickname": "nickname", "create_time": CreateTime},
|
|
{"passport": "user2", "password": "pwd", "nickname": "nickname", "create_time": CreateTime},
|
|
{"passport": "user3", "password": "pwd", "nickname": "nickname", "create_time": CreateTime},
|
|
})
|
|
t.AssertNil(err)
|
|
lastInsertId, err := res.LastInsertId()
|
|
t.AssertNil(err)
|
|
t.Assert(lastInsertId, int64(3))
|
|
rowsAffected, err := res.RowsAffected()
|
|
t.AssertNil(err)
|
|
t.Assert(rowsAffected, int64(3))
|
|
})
|
|
}
|
|
|
|
func Test_TxLastInsertId(t *testing.T) {
|
|
gtest.C(t, func(t *gtest.T) {
|
|
tableName := createTable()
|
|
defer dropTable(tableName)
|
|
err := db.Transaction(context.TODO(), func(ctx context.Context, tx gdb.TX) error {
|
|
// user
|
|
res, err := tx.Model(tableName).Insert(g.List{
|
|
{"passport": "user1", "password": "pwd", "nickname": "nickname", "create_time": CreateTime},
|
|
{"passport": "user2", "password": "pwd", "nickname": "nickname", "create_time": CreateTime},
|
|
{"passport": "user3", "password": "pwd", "nickname": "nickname", "create_time": CreateTime},
|
|
})
|
|
t.AssertNil(err)
|
|
lastInsertId, err := res.LastInsertId()
|
|
t.AssertNil(err)
|
|
t.AssertEQ(lastInsertId, int64(3))
|
|
rowsAffected, err := res.RowsAffected()
|
|
t.AssertNil(err)
|
|
t.AssertEQ(rowsAffected, int64(3))
|
|
|
|
res1, err := tx.Model(tableName).Insert(g.List{
|
|
{"passport": "user4", "password": "pwd", "nickname": "nickname", "create_time": CreateTime},
|
|
{"passport": "user5", "password": "pwd", "nickname": "nickname", "create_time": CreateTime},
|
|
})
|
|
t.AssertNil(err)
|
|
lastInsertId1, err := res1.LastInsertId()
|
|
t.AssertNil(err)
|
|
t.AssertEQ(lastInsertId1, int64(5))
|
|
rowsAffected1, err := res1.RowsAffected()
|
|
t.AssertNil(err)
|
|
t.AssertEQ(rowsAffected1, int64(2))
|
|
return nil
|
|
|
|
})
|
|
t.AssertNil(err)
|
|
})
|
|
}
|
|
|
|
func Test_Driver_DoFilter(t *testing.T) {
|
|
var (
|
|
ctx = gctx.New()
|
|
driver = pgsql.Driver{}
|
|
)
|
|
gtest.C(t, func(t *gtest.T) {
|
|
var data = g.Map{
|
|
`select * from user where (role)::jsonb ?| 'admin'`: `select * from user where (role)::jsonb ?| 'admin'`,
|
|
`select * from user where (role)::jsonb ?| '?'`: `select * from user where (role)::jsonb ?| '$2'`,
|
|
`select * from user where (role)::jsonb &? '?'`: `select * from user where (role)::jsonb &? '$2'`,
|
|
`select * from user where (role)::jsonb ? '?'`: `select * from user where (role)::jsonb ? '$2'`,
|
|
`select * from user where '?'`: `select * from user where '$1'`,
|
|
}
|
|
for k, v := range data {
|
|
newSql, _, err := driver.DoFilter(ctx, nil, k, nil)
|
|
t.AssertNil(err)
|
|
t.Assert(newSql, v)
|
|
}
|
|
})
|
|
}
|