v1_test.go 21 KB

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