demo.go 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. package main
  2. import (
  3. "git.sxidc.com/go-tools/utils/strutils"
  4. "git.sxidc.com/service-supports/ds-sdk/db_operations"
  5. "git.sxidc.com/service-supports/ds-sdk/sdk"
  6. "math/rand"
  7. )
  8. const (
  9. token = "IpTTwAQweh/BP51fz5CzWKQFaXHvZe6ewvk6yOcAOkU="
  10. baseUrl = "http://localhost:10000"
  11. namespace = "ns-sdk-demo"
  12. dataSource = "ds-sdk-demo"
  13. dataContainer = "dc-sdk-demo"
  14. sql = "delete-sdk-demo"
  15. )
  16. var (
  17. dataContainerSpec = sdk.DataContainerDatabaseSpec{
  18. TableName: "test.classes",
  19. Columns: []sdk.DataContainerDatabaseColumnSpec{
  20. {
  21. Name: "id",
  22. Type: "varchar(32)",
  23. Comment: "id",
  24. PrimaryKey: true,
  25. },
  26. {
  27. Name: "name",
  28. Type: "varchar(128)",
  29. Comment: "班名",
  30. NotNull: true,
  31. },
  32. {
  33. Name: "student_num",
  34. Type: "integer",
  35. Comment: "学生数量",
  36. Default: 60,
  37. },
  38. },
  39. }
  40. sqlSpec = sdk.SqlSpec{
  41. Transaction: false,
  42. Clauses: "- DELETE FROM test.classes WHERE id = '{{ .id }}'",
  43. }
  44. )
  45. func main() {
  46. classID1 := strutils.SimpleUUID()
  47. className1 := strutils.SimpleUUID()
  48. studentNum1 := rand.Int31n(100)
  49. newClassName1 := strutils.SimpleUUID()
  50. newStudentNum1 := rand.Int31n(100)
  51. classID2 := strutils.SimpleUUID()
  52. className2 := strutils.SimpleUUID()
  53. studentNum2 := rand.Int31n(100)
  54. err := sdk.InitInstance(token, baseUrl, namespace, dataSource)
  55. if err != nil {
  56. panic(err)
  57. }
  58. defer func() {
  59. err := sdk.DestroyInstance()
  60. if err != nil {
  61. panic(err)
  62. }
  63. }()
  64. err = sdk.GetInstance().CreateDataContainer(dataContainer, dataContainerSpec.ToMap())
  65. if err != nil {
  66. panic(err)
  67. }
  68. err = sdk.GetInstance().GetDBOperations().
  69. Table("test.classes").
  70. Create(db_operations.NewTableRowFromMap(map[string]any{
  71. "id": classID1,
  72. "name": className1,
  73. "student_num": studentNum1,
  74. }))
  75. if err != nil {
  76. panic(err)
  77. }
  78. err = sdk.GetInstance().GetDBOperations().
  79. Table("test.classes").
  80. Where(db_operations.NewConditions().Equal("id", classID1)).
  81. Delete()
  82. if err != nil {
  83. panic(err)
  84. }
  85. err = sdk.GetInstance().GetDBOperations().
  86. Table("test.classes").
  87. CreateBatch([]db_operations.TableRow{
  88. *db_operations.NewTableRow().
  89. AddColumnValueString("id", classID1).
  90. AddColumnValueString("name", className1).
  91. AddColumnValueInt32("student_num", studentNum1),
  92. *db_operations.NewTableRowFromMap(map[string]any{
  93. "id": classID2,
  94. "name": className2,
  95. "student_num": studentNum2,
  96. }),
  97. })
  98. if err != nil {
  99. panic(err)
  100. }
  101. tx := sdk.GetInstance().GetDBOperations().BeginTransaction()
  102. _, err = tx.
  103. Raw("UPDATE test.classes SET name = ?, student_num = ? WHERE id = ?", newClassName1, newStudentNum1, classID1).
  104. Rows(0, 0)
  105. if err != nil {
  106. tx.RollbackTransaction()
  107. panic(err)
  108. }
  109. tx.CommitTransaction()
  110. tableRow, err := sdk.GetInstance().GetDBOperations().
  111. Table("test.classes").
  112. Where(db_operations.NewConditions().Equal("id", classID1)).
  113. Row()
  114. if err != nil {
  115. panic(err)
  116. }
  117. if tableRow.ColumnValueString("id") != classID1 ||
  118. tableRow.ColumnValueString("name") != newClassName1 ||
  119. tableRow.ColumnValueInt32("student_num") != newStudentNum1 {
  120. panic("数据查询错误")
  121. }
  122. tableRows, err := sdk.GetInstance().GetDBOperations().NewSession().
  123. Raw("SELECT * FROM test.classes LIMIT 1 OFFSET 1").
  124. Rows(0, 0)
  125. if err != nil {
  126. panic(err)
  127. }
  128. for _, tableRow := range tableRows {
  129. if tableRow.ColumnValueString("id") == classID1 {
  130. if tableRow.ColumnValueString("name") != newClassName1 ||
  131. tableRow.ColumnValueInt32("student_num") != newStudentNum1 {
  132. panic("数据查询错误")
  133. }
  134. } else {
  135. if tableRow.ColumnValueString("name") != className2 ||
  136. tableRow.ColumnValueInt32("student_num") != studentNum2 {
  137. panic("数据查询错误")
  138. }
  139. }
  140. }
  141. err = sdk.GetInstance().CreateSQL(sql, sqlSpec.ToMap())
  142. if err != nil {
  143. panic(err)
  144. }
  145. _, err = sdk.GetInstance().ExecuteSql(sql, map[string]any{"id": classID1})
  146. if err != nil {
  147. panic(err)
  148. }
  149. err = sdk.GetInstance().DeleteSQL(sql)
  150. if err != nil {
  151. panic(err)
  152. }
  153. err = sdk.GetInstance().DeleteDataContainer(dataContainer)
  154. if err != nil {
  155. panic(err)
  156. }
  157. }