package v1 import ( "git.sxidc.com/service-supports/dps-sdk/ports" "math/rand" "testing" "time" ) var tableModelDescribe = ports.TableModelDescribe{ Fields: []ports.TableModelField{ {"ID", "gorm:\"primary_key;type:varchar(32);comment:id;\""}, {"Name", "gorm:\"not null;type:varchar(128);comment:数据库名称;\""}, {"Time", "gorm:\"not null;type:timestamp with time zone;comment:数据库时间;\""}, {"TableNum", "gorm:\"not null;type:integer;comment:数据库表数量;\""}, }, } func TestAutoMigrate(t *testing.T) { initClient(t, "localhost:30170") defer destroyClient(t) newToolKit(t).autoMigrate(&ports.AutoMigrateRequest{ DatabaseID: "2b78141779ee432295ca371b91c5cac7", TablePrefixWithSchema: "test." + simpleUUID()[0:8], Version: "v1", TableModelDescribe: tableModelDescribe, }) } func TestInsert(t *testing.T) { initClient(t, "localhost:30170") defer destroyClient(t) tablePrefix := "test." + simpleUUID()[0:8] id := simpleUUID() name := simpleUUID() now := time.Now().Local() tableNum := rand.New(rand.NewSource(now.Unix())).Intn(10) resultMap := make(map[string]any) newToolKit(t). autoMigrate(&ports.AutoMigrateRequest{ DatabaseID: "2b78141779ee432295ca371b91c5cac7", TablePrefixWithSchema: tablePrefix, Version: "v1", TableModelDescribe: tableModelDescribe, }). insert(&ports.InsertRequest{ DatabaseID: "2b78141779ee432295ca371b91c5cac7", TablePrefixWithSchema: tablePrefix, Version: "v1", KeyColumns: []string{"id"}, TableRow: map[string]any{ "id": id, "name": name, "time": now, "table_num": tableNum, }, UserID: "test", }). queryByKeys(&ports.QueryByKeysRequest{ DatabaseID: "2b78141779ee432295ca371b91c5cac7", TablePrefixWithSchema: tablePrefix, Version: "v1", KeyValues: map[string]string{"id": id}, }, &resultMap). assertEqual(id, resultMap["id"], "ID不一致"). assertEqual(name, resultMap["name"], "名称不一致"). assertEqual(now.UnixMilli(), resultMap["time"].(time.Time).Local().UnixMilli(), "时间不一致"). assertEqual(tableNum, resultMap["table_num"], "表数量不一致") } func TestUpdate(t *testing.T) { initClient(t, "localhost:30170") defer destroyClient(t) tablePrefix := "test." + simpleUUID()[0:8] id := simpleUUID() name := simpleUUID() now := time.Now().Local() tableNum := rand.New(rand.NewSource(now.Unix())).Intn(10) newName := simpleUUID() newNow := time.Now().Local() newTableNum := rand.New(rand.NewSource(now.Unix())).Intn(10) resultMap := make(map[string]any) newToolKit(t). autoMigrate(&ports.AutoMigrateRequest{ DatabaseID: "2b78141779ee432295ca371b91c5cac7", TablePrefixWithSchema: tablePrefix, Version: "v1", TableModelDescribe: tableModelDescribe, }). insert(&ports.InsertRequest{ DatabaseID: "2b78141779ee432295ca371b91c5cac7", TablePrefixWithSchema: tablePrefix, Version: "v1", KeyColumns: []string{"id"}, TableRow: map[string]any{ "id": id, "name": name, "time": now, "table_num": tableNum, }, UserID: "test", }). update(&ports.UpdateRequest{ DatabaseID: "2b78141779ee432295ca371b91c5cac7", TablePrefixWithSchema: tablePrefix, Version: "v1", KeyValues: map[string]string{"id": id}, NewTableRow: map[string]any{ "id": id, "name": newName, "time": newNow, "table_num": newTableNum, }, UserID: "test", }). queryByKeys(&ports.QueryByKeysRequest{ DatabaseID: "2b78141779ee432295ca371b91c5cac7", TablePrefixWithSchema: tablePrefix, Version: "v1", KeyValues: map[string]string{"id": id}, }, &resultMap). assertEqual(id, resultMap["id"], "ID不一致"). assertEqual(newName, resultMap["name"], "名称不一致"). assertEqual(newNow.UnixMilli(), resultMap["time"].(time.Time).Local().UnixMilli(), "时间不一致"). assertEqual(newTableNum, resultMap["table_num"], "表数量不一致") } func TestDelete(t *testing.T) { initClient(t, "localhost:30170") defer destroyClient(t) tablePrefix := "test." + simpleUUID()[0:8] id := simpleUUID() name := simpleUUID() now := time.Now().Local() tableNum := rand.New(rand.NewSource(now.Unix())).Intn(10) var count int64 newToolKit(t). autoMigrate(&ports.AutoMigrateRequest{ DatabaseID: "2b78141779ee432295ca371b91c5cac7", TablePrefixWithSchema: tablePrefix, Version: "v1", TableModelDescribe: tableModelDescribe, }). insert(&ports.InsertRequest{ DatabaseID: "2b78141779ee432295ca371b91c5cac7", TablePrefixWithSchema: tablePrefix, Version: "v1", KeyColumns: []string{"id"}, TableRow: map[string]any{ "id": id, "name": name, "time": now, "table_num": tableNum, }, UserID: "test", }). delete(&ports.DeleteRequest{ DatabaseID: "2b78141779ee432295ca371b91c5cac7", TablePrefixWithSchema: tablePrefix, Version: "v1", KeyValues: map[string]string{"id": id}, UserID: "test", }). countWhere(&ports.CountWhereRequest{ DatabaseID: "2b78141779ee432295ca371b91c5cac7", TablePrefixWithSchema: tablePrefix, Version: "v1", Where: []ports.ColumnCompare{ { Column: "id", Value: id, Compare: ports.CompareEqual, }, }, }, &count). assertEqual(int64(0), count, "数量不一致") }