v1_test.go 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708
  1. package v1
  2. import (
  3. "fmt"
  4. "git.sxidc.com/service-supports/dps-sdk/ports"
  5. "math/rand"
  6. "testing"
  7. "time"
  8. )
  9. var tableModelDescribe = ports.TableModelDescribe{
  10. Fields: []ports.TableModelField{
  11. {"ID", "gorm:\"primary_key;type:varchar(32);comment:id;\""},
  12. {"Name", "gorm:\"not null;type:varchar(128);comment:数据库名称;\""},
  13. {"Time", "gorm:\"not null;type:timestamp with time zone;comment:数据库时间;\""},
  14. {"TableNum", "gorm:\"not null;type:integer;comment:数据库表数量;\""},
  15. },
  16. }
  17. func TestAutoMigrate(t *testing.T) {
  18. initClient(t, "localhost:30170")
  19. defer destroyClient(t)
  20. newToolKit(t).autoMigrate(&ports.AutoMigrateRequest{
  21. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  22. TablePrefixWithSchema: "test." + simpleUUID()[0:8],
  23. Version: "v1",
  24. TableModelDescribe: tableModelDescribe,
  25. })
  26. }
  27. func TestTransaction(t *testing.T) {
  28. initClient(t, "localhost:30170")
  29. defer destroyClient(t)
  30. tablePrefix := "test." + simpleUUID()[0:8]
  31. id := simpleUUID()
  32. name := simpleUUID()
  33. now := time.Now().Local()
  34. tableNum := rand.New(rand.NewSource(now.Unix())).Intn(10)
  35. newName := simpleUUID()
  36. newNow := time.Now().Local()
  37. newTableNum := rand.New(rand.NewSource(now.Unix())).Intn(10)
  38. var count int64
  39. resultMap := make(map[string]any)
  40. newToolKit(t).
  41. autoMigrate(&ports.AutoMigrateRequest{
  42. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  43. TablePrefixWithSchema: tablePrefix,
  44. Version: "v1",
  45. TableModelDescribe: tableModelDescribe,
  46. }).
  47. transaction("2b78141779ee432295ca371b91c5cac7", func(tx ports.Transaction) error {
  48. statement, err := tx.InsertTx(&ports.InsertRequest{
  49. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  50. TablePrefixWithSchema: tablePrefix,
  51. Version: "v1",
  52. KeyColumns: []string{"id"},
  53. TableRow: map[string]any{
  54. "id": id,
  55. "name": name,
  56. "time": now,
  57. "table_num": tableNum,
  58. },
  59. UserID: "test",
  60. })
  61. if err != nil {
  62. return err
  63. }
  64. fmt.Println(statement)
  65. err = tx.End()
  66. if err != nil {
  67. return err
  68. }
  69. return nil
  70. }).
  71. queryByKeys(&ports.QueryByKeysRequest{
  72. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  73. TablePrefixWithSchema: tablePrefix,
  74. Version: "v1",
  75. KeyValues: map[string]string{"id": id},
  76. }, &resultMap).
  77. assertEqual(id, resultMap["id"], "ID不一致").
  78. assertEqual(name, resultMap["name"], "名称不一致").
  79. assertEqual(now.UnixMilli(), resultMap["time"].(time.Time).UnixMilli(), "时间不一致").
  80. assertEqual(tableNum, resultMap["table_num"], "表数量不一致").
  81. transaction("2b78141779ee432295ca371b91c5cac7", func(tx ports.Transaction) error {
  82. statement, err := tx.UpdateTx(&ports.UpdateRequest{
  83. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  84. TablePrefixWithSchema: tablePrefix,
  85. Version: "v1",
  86. KeyValues: map[string]string{"id": id},
  87. NewTableRow: map[string]any{
  88. "id": id,
  89. "name": newName,
  90. "time": newNow,
  91. "table_num": newTableNum,
  92. },
  93. UserID: "test",
  94. })
  95. if err != nil {
  96. return err
  97. }
  98. fmt.Println(statement)
  99. err = tx.End()
  100. if err != nil {
  101. return err
  102. }
  103. return nil
  104. }).
  105. queryByKeys(&ports.QueryByKeysRequest{
  106. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  107. TablePrefixWithSchema: tablePrefix,
  108. Version: "v1",
  109. KeyValues: map[string]string{"id": id},
  110. }, &resultMap).
  111. assertEqual(id, resultMap["id"], "ID不一致").
  112. assertEqual(newName, resultMap["name"], "名称不一致").
  113. assertEqual(newNow.UnixMilli(), resultMap["time"].(time.Time).UnixMilli(), "时间不一致").
  114. assertEqual(newTableNum, resultMap["table_num"], "表数量不一致").
  115. transaction("2b78141779ee432295ca371b91c5cac7", func(tx ports.Transaction) error {
  116. statement, err := tx.UpdateTx(&ports.UpdateRequest{
  117. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  118. TablePrefixWithSchema: tablePrefix,
  119. Version: "v1",
  120. KeyValues: map[string]string{"id": id},
  121. NewTableRow: map[string]any{
  122. "id": id,
  123. "name": name,
  124. "time": now,
  125. "table_num": tableNum,
  126. },
  127. UserID: "test",
  128. })
  129. if err != nil {
  130. return err
  131. }
  132. fmt.Println(statement)
  133. statement, err = tx.DeleteTx(&ports.DeleteRequest{
  134. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  135. TablePrefixWithSchema: tablePrefix,
  136. Version: "v1",
  137. KeyValues: map[string]string{"id": id},
  138. UserID: "test",
  139. })
  140. if err != nil {
  141. return err
  142. }
  143. fmt.Println(statement)
  144. err = tx.End()
  145. if err != nil {
  146. return err
  147. }
  148. return nil
  149. }).
  150. countWhere(&ports.CountWhereRequest{
  151. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  152. TablePrefixWithSchema: tablePrefix,
  153. Version: "v1",
  154. Where: []ports.ColumnCompare{
  155. {
  156. Column: "id",
  157. Value: id,
  158. Compare: ports.CompareEqual,
  159. },
  160. },
  161. }, &count).
  162. assertEqual(int64(0), count, "数量不一致")
  163. }
  164. func TestTransactionBatch(t *testing.T) {
  165. initClient(t, "localhost:30170")
  166. defer destroyClient(t)
  167. tablePrefix := "test." + simpleUUID()[0:8]
  168. id1 := simpleUUID()
  169. name1 := simpleUUID()
  170. now1 := time.Now().Local()
  171. tableNum1 := rand.New(rand.NewSource(now1.Unix())).Intn(10)
  172. id2 := simpleUUID()
  173. name2 := simpleUUID()
  174. now2 := time.Now().Local()
  175. tableNum2 := rand.New(rand.NewSource(now2.Unix())).Intn(10)
  176. var count int64
  177. resultMap := make(map[string]any)
  178. newToolKit(t).
  179. autoMigrate(&ports.AutoMigrateRequest{
  180. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  181. TablePrefixWithSchema: tablePrefix,
  182. Version: "v1",
  183. TableModelDescribe: tableModelDescribe,
  184. }).
  185. transaction("2b78141779ee432295ca371b91c5cac7", func(tx ports.Transaction) error {
  186. statement, err := tx.InsertBatchTx(&ports.InsertBatchRequest{
  187. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  188. Items: []*ports.InsertTableItem{
  189. {
  190. TablePrefixWithSchema: tablePrefix,
  191. Version: "v1",
  192. Items: []*ports.InsertItem{
  193. {
  194. KeyColumns: []string{"id"},
  195. TableRow: map[string]any{
  196. "id": id1,
  197. "name": name1,
  198. "time": now1,
  199. "table_num": tableNum1,
  200. },
  201. },
  202. {
  203. KeyColumns: []string{"id"},
  204. TableRow: map[string]any{
  205. "id": id2,
  206. "name": name2,
  207. "time": now2,
  208. "table_num": tableNum2,
  209. },
  210. },
  211. },
  212. },
  213. },
  214. UserID: "test",
  215. })
  216. if err != nil {
  217. return err
  218. }
  219. fmt.Println(statement)
  220. err = tx.End()
  221. if err != nil {
  222. return err
  223. }
  224. return nil
  225. }).
  226. queryByKeys(&ports.QueryByKeysRequest{
  227. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  228. TablePrefixWithSchema: tablePrefix,
  229. Version: "v1",
  230. KeyValues: map[string]string{"id": id1},
  231. }, &resultMap).
  232. assertEqual(id1, resultMap["id"], "ID不一致").
  233. assertEqual(name1, resultMap["name"], "名称不一致").
  234. assertEqual(now1.UnixMilli(), resultMap["time"].(time.Time).UnixMilli(), "时间不一致").
  235. assertEqual(tableNum1, resultMap["table_num"], "表数量不一致").
  236. queryByKeys(&ports.QueryByKeysRequest{
  237. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  238. TablePrefixWithSchema: tablePrefix,
  239. Version: "v1",
  240. KeyValues: map[string]string{"id": id2},
  241. }, &resultMap).
  242. assertEqual(id2, resultMap["id"], "ID不一致").
  243. assertEqual(name2, resultMap["name"], "名称不一致").
  244. assertEqual(now2.UnixMilli(), resultMap["time"].(time.Time).UnixMilli(), "时间不一致").
  245. assertEqual(tableNum2, resultMap["table_num"], "表数量不一致").
  246. transaction("2b78141779ee432295ca371b91c5cac7", func(tx ports.Transaction) error {
  247. statement, err := tx.DeleteBatchTx(&ports.DeleteBatchRequest{
  248. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  249. Items: []*ports.DeleteTableItem{
  250. {
  251. TablePrefixWithSchema: tablePrefix,
  252. Version: "v1",
  253. Items: []*ports.DeleteItem{
  254. {KeyValues: map[string]string{"id": id1}},
  255. {KeyValues: map[string]string{"id": id2}},
  256. },
  257. },
  258. },
  259. UserID: "test",
  260. })
  261. if err != nil {
  262. return err
  263. }
  264. fmt.Println(statement)
  265. err = tx.End()
  266. if err != nil {
  267. return err
  268. }
  269. return nil
  270. }).
  271. countWhere(&ports.CountWhereRequest{
  272. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  273. TablePrefixWithSchema: tablePrefix,
  274. Version: "v1",
  275. Where: []ports.ColumnCompare{
  276. {
  277. Column: "id",
  278. Value: id1,
  279. Compare: ports.CompareEqual,
  280. },
  281. },
  282. }, &count).
  283. assertEqual(int64(0), count, "数量不一致").
  284. countWhere(&ports.CountWhereRequest{
  285. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  286. TablePrefixWithSchema: tablePrefix,
  287. Version: "v1",
  288. Where: []ports.ColumnCompare{
  289. {
  290. Column: "id",
  291. Value: id2,
  292. Compare: ports.CompareEqual,
  293. },
  294. },
  295. }, &count).
  296. assertEqual(int64(0), count, "数量不一致")
  297. }
  298. func TestInsert(t *testing.T) {
  299. initClient(t, "localhost:30170")
  300. defer destroyClient(t)
  301. tablePrefix := "test." + simpleUUID()[0:8]
  302. id := simpleUUID()
  303. name := simpleUUID()
  304. now := time.Now().Local()
  305. tableNum := rand.New(rand.NewSource(now.Unix())).Intn(10)
  306. resultMap := make(map[string]any)
  307. newToolKit(t).
  308. autoMigrate(&ports.AutoMigrateRequest{
  309. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  310. TablePrefixWithSchema: tablePrefix,
  311. Version: "v1",
  312. TableModelDescribe: tableModelDescribe,
  313. }).
  314. insert(&ports.InsertRequest{
  315. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  316. TablePrefixWithSchema: tablePrefix,
  317. Version: "v1",
  318. KeyColumns: []string{"id"},
  319. TableRow: map[string]any{
  320. "id": id,
  321. "name": name,
  322. "time": now,
  323. "table_num": tableNum,
  324. },
  325. UserID: "test",
  326. }).
  327. queryByKeys(&ports.QueryByKeysRequest{
  328. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  329. TablePrefixWithSchema: tablePrefix,
  330. Version: "v1",
  331. KeyValues: map[string]string{"id": id},
  332. }, &resultMap).
  333. assertEqual(id, resultMap["id"], "ID不一致").
  334. assertEqual(name, resultMap["name"], "名称不一致").
  335. assertEqual(now.UnixMilli(), resultMap["time"].(time.Time).Local().UnixMilli(), "时间不一致").
  336. assertEqual(tableNum, resultMap["table_num"], "表数量不一致")
  337. }
  338. func TestInsertBatch(t *testing.T) {
  339. initClient(t, "localhost:30170")
  340. defer destroyClient(t)
  341. tablePrefix := "test." + simpleUUID()[0:8]
  342. id1 := simpleUUID()
  343. name1 := simpleUUID()
  344. now1 := time.Now().Local()
  345. tableNum1 := rand.New(rand.NewSource(now1.Unix())).Intn(10)
  346. id2 := simpleUUID()
  347. name2 := simpleUUID()
  348. now2 := time.Now().Local()
  349. tableNum2 := rand.New(rand.NewSource(now2.Unix())).Intn(10)
  350. resultsMap := make([]map[string]any, 0)
  351. newToolKit(t).
  352. autoMigrate(&ports.AutoMigrateRequest{
  353. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  354. TablePrefixWithSchema: tablePrefix,
  355. Version: "v1",
  356. TableModelDescribe: tableModelDescribe,
  357. }).
  358. insertBatch(&ports.InsertBatchRequest{
  359. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  360. Items: []*ports.InsertTableItem{
  361. {
  362. TablePrefixWithSchema: tablePrefix,
  363. Version: "v1",
  364. Items: []*ports.InsertItem{
  365. {
  366. KeyColumns: []string{"id"},
  367. TableRow: map[string]any{
  368. "id": id1,
  369. "name": name1,
  370. "time": now1,
  371. "table_num": tableNum1,
  372. },
  373. },
  374. {
  375. KeyColumns: []string{"id"},
  376. TableRow: map[string]any{
  377. "id": id2,
  378. "name": name2,
  379. "time": now2,
  380. "table_num": tableNum2,
  381. },
  382. },
  383. },
  384. },
  385. },
  386. UserID: "test",
  387. }).
  388. queryByWhereAndOrderBy(&ports.QueryByWhereAndOrderByRequest{
  389. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  390. TablePrefixWithSchema: tablePrefix,
  391. Version: "v1",
  392. Where: []ports.ColumnCompare{
  393. {Column: "id", Value: id1, Compare: ports.CompareEqual},
  394. {Column: "name", Value: name1, Compare: ports.CompareEqual},
  395. {Column: "table_num", Value: tableNum1, Compare: ports.CompareEqual},
  396. },
  397. PageNo: 1,
  398. PageSize: 1,
  399. }, &resultsMap).
  400. assertEqual(id1, resultsMap[0]["id"], "ID不一致").
  401. assertEqual(name1, resultsMap[0]["name"], "名称不一致").
  402. assertEqual(now1.UnixMilli(), resultsMap[0]["time"].(time.Time).Local().UnixMilli(), "时间不一致").
  403. assertEqual(tableNum1, resultsMap[0]["table_num"], "表数量不一致").
  404. commonQuery(&ports.CommonQueryRequest{
  405. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  406. TablePrefixWithSchema: tablePrefix,
  407. Version: "v1",
  408. Where: []ports.ColumnCompare{
  409. {Column: "id", Value: id2, Compare: ports.CompareEqual},
  410. {Column: "name", Value: name2, Compare: ports.CompareEqual},
  411. {Column: "table_num", Value: tableNum2, Compare: ports.CompareEqual},
  412. },
  413. PageNo: 1,
  414. PageSize: 1,
  415. }, &resultsMap).
  416. assertEqual(id2, resultsMap[0]["id"], "ID不一致").
  417. assertEqual(name2, resultsMap[0]["name"], "名称不一致").
  418. assertEqual(now2.UnixMilli(), resultsMap[0]["time"].(time.Time).Local().UnixMilli(), "时间不一致").
  419. assertEqual(tableNum2, resultsMap[0]["table_num"], "表数量不一致")
  420. }
  421. func TestUpdate(t *testing.T) {
  422. initClient(t, "localhost:30170")
  423. defer destroyClient(t)
  424. tablePrefix := "test." + simpleUUID()[0:8]
  425. id := simpleUUID()
  426. name := simpleUUID()
  427. now := time.Now().Local()
  428. tableNum := rand.New(rand.NewSource(now.Unix())).Intn(10)
  429. newName := simpleUUID()
  430. newNow := time.Now().Local()
  431. newTableNum := rand.New(rand.NewSource(now.Unix())).Intn(10)
  432. resultMap := make(map[string]any)
  433. newToolKit(t).
  434. autoMigrate(&ports.AutoMigrateRequest{
  435. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  436. TablePrefixWithSchema: tablePrefix,
  437. Version: "v1",
  438. TableModelDescribe: tableModelDescribe,
  439. }).
  440. insert(&ports.InsertRequest{
  441. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  442. TablePrefixWithSchema: tablePrefix,
  443. Version: "v1",
  444. KeyColumns: []string{"id"},
  445. TableRow: map[string]any{
  446. "id": id,
  447. "name": name,
  448. "time": now,
  449. "table_num": tableNum,
  450. },
  451. UserID: "test",
  452. }).
  453. update(&ports.UpdateRequest{
  454. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  455. TablePrefixWithSchema: tablePrefix,
  456. Version: "v1",
  457. KeyValues: map[string]string{"id": id},
  458. NewTableRow: map[string]any{
  459. "id": id,
  460. "name": newName,
  461. "time": newNow,
  462. "table_num": newTableNum,
  463. },
  464. UserID: "test",
  465. }).
  466. queryByKeys(&ports.QueryByKeysRequest{
  467. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  468. TablePrefixWithSchema: tablePrefix,
  469. Version: "v1",
  470. KeyValues: map[string]string{"id": id},
  471. }, &resultMap).
  472. assertEqual(id, resultMap["id"], "ID不一致").
  473. assertEqual(newName, resultMap["name"], "名称不一致").
  474. assertEqual(newNow.UnixMilli(), resultMap["time"].(time.Time).Local().UnixMilli(), "时间不一致").
  475. assertEqual(newTableNum, resultMap["table_num"], "表数量不一致")
  476. }
  477. func TestDelete(t *testing.T) {
  478. initClient(t, "localhost:30170")
  479. defer destroyClient(t)
  480. tablePrefix := "test." + simpleUUID()[0:8]
  481. id := simpleUUID()
  482. name := simpleUUID()
  483. now := time.Now().Local()
  484. tableNum := rand.New(rand.NewSource(now.Unix())).Intn(10)
  485. var count int64
  486. newToolKit(t).
  487. autoMigrate(&ports.AutoMigrateRequest{
  488. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  489. TablePrefixWithSchema: tablePrefix,
  490. Version: "v1",
  491. TableModelDescribe: tableModelDescribe,
  492. }).
  493. insert(&ports.InsertRequest{
  494. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  495. TablePrefixWithSchema: tablePrefix,
  496. Version: "v1",
  497. KeyColumns: []string{"id"},
  498. TableRow: map[string]any{
  499. "id": id,
  500. "name": name,
  501. "time": now,
  502. "table_num": tableNum,
  503. },
  504. UserID: "test",
  505. }).
  506. delete(&ports.DeleteRequest{
  507. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  508. TablePrefixWithSchema: tablePrefix,
  509. Version: "v1",
  510. KeyValues: map[string]string{"id": id},
  511. UserID: "test",
  512. }).
  513. countWhere(&ports.CountWhereRequest{
  514. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  515. TablePrefixWithSchema: tablePrefix,
  516. Version: "v1",
  517. Where: []ports.ColumnCompare{
  518. {
  519. Column: "id",
  520. Value: id,
  521. Compare: ports.CompareEqual,
  522. },
  523. },
  524. }, &count).
  525. assertEqual(int64(0), count, "数量不一致")
  526. }
  527. func TestDeleteBatch(t *testing.T) {
  528. initClient(t, "localhost:30170")
  529. defer destroyClient(t)
  530. tablePrefix := "test." + simpleUUID()[0:8]
  531. id1 := simpleUUID()
  532. name1 := simpleUUID()
  533. now1 := time.Now().Local()
  534. tableNum1 := rand.New(rand.NewSource(now1.Unix())).Intn(10)
  535. id2 := simpleUUID()
  536. name2 := simpleUUID()
  537. now2 := time.Now().Local()
  538. tableNum2 := rand.New(rand.NewSource(now2.Unix())).Intn(10)
  539. var count int64
  540. newToolKit(t).
  541. autoMigrate(&ports.AutoMigrateRequest{
  542. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  543. TablePrefixWithSchema: tablePrefix,
  544. Version: "v1",
  545. TableModelDescribe: tableModelDescribe,
  546. }).
  547. insertBatch(&ports.InsertBatchRequest{
  548. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  549. Items: []*ports.InsertTableItem{
  550. {
  551. TablePrefixWithSchema: tablePrefix,
  552. Version: "v1",
  553. Items: []*ports.InsertItem{
  554. {
  555. KeyColumns: []string{"id"},
  556. TableRow: map[string]any{
  557. "id": id1,
  558. "name": name1,
  559. "time": now1,
  560. "table_num": tableNum1,
  561. },
  562. },
  563. {
  564. KeyColumns: []string{"id"},
  565. TableRow: map[string]any{
  566. "id": id2,
  567. "name": name2,
  568. "time": now2,
  569. "table_num": tableNum2,
  570. },
  571. },
  572. },
  573. },
  574. },
  575. UserID: "test",
  576. }).
  577. deleteBatch(&ports.DeleteBatchRequest{
  578. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  579. Items: []*ports.DeleteTableItem{
  580. {
  581. TablePrefixWithSchema: tablePrefix,
  582. Version: "v1",
  583. Items: []*ports.DeleteItem{
  584. {KeyValues: map[string]string{"id": id1}},
  585. {KeyValues: map[string]string{"id": id2}},
  586. },
  587. },
  588. },
  589. UserID: "test",
  590. }).
  591. commonCount(&ports.CommonCountRequest{
  592. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  593. TablePrefixWithSchema: tablePrefix,
  594. Version: "v1",
  595. }, &count).
  596. assertEqual(int64(0), count, "数量不一致")
  597. }
  598. func TestReply(t *testing.T) {
  599. initClient(t, "localhost:30170")
  600. defer destroyClient(t)
  601. tablePrefix := "test." + simpleUUID()[0:8]
  602. id := simpleUUID()
  603. name := simpleUUID()
  604. now := time.Now().Local()
  605. tableNum := rand.New(rand.NewSource(now.Unix())).Intn(10)
  606. resultMap := make(map[string]any)
  607. newToolKit(t).
  608. autoMigrate(&ports.AutoMigrateRequest{
  609. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  610. TablePrefixWithSchema: tablePrefix,
  611. Version: "v1",
  612. TableModelDescribe: tableModelDescribe,
  613. }).
  614. insert(&ports.InsertRequest{
  615. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  616. TablePrefixWithSchema: tablePrefix,
  617. Version: "v1",
  618. KeyColumns: []string{"id"},
  619. TableRow: map[string]any{
  620. "id": id,
  621. "name": name,
  622. "time": now,
  623. "table_num": tableNum,
  624. },
  625. UserID: "test",
  626. }).
  627. reply(&ports.ReplayRequest{
  628. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  629. TablePrefixWithSchema: tablePrefix,
  630. Version: "v1",
  631. KeyValues: map[string]string{"id": id},
  632. UserID: "test",
  633. }).
  634. queryByKeys(&ports.QueryByKeysRequest{
  635. DatabaseID: "2b78141779ee432295ca371b91c5cac7",
  636. TablePrefixWithSchema: tablePrefix,
  637. Version: "v1",
  638. KeyValues: map[string]string{"id": id},
  639. }, &resultMap).
  640. assertEqual(id, resultMap["id"], "ID不一致").
  641. assertEqual(name, resultMap["name"], "名称不一致").
  642. assertEqual(now.UnixMilli(), resultMap["time"].(time.Time).Local().UnixMilli(), "时间不一致").
  643. assertEqual(tableNum, resultMap["table_num"], "表数量不一致")
  644. }