v1_test.go 21 KB

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