demo.go 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. package main
  2. import (
  3. "git.sxidc.com/go-tools/utils/strutils"
  4. "git.sxidc.com/service-supports/ds-sdk/sdk"
  5. "math/rand"
  6. )
  7. const (
  8. token = "IpTTwAQweh/BP51fz5CzWKQFaXHvZe6ewvk6yOcAOkU="
  9. baseUrl = "http://localhost:10000"
  10. namespace = "ns-sdk-demo"
  11. dataSource = "ds-sdk-demo"
  12. dataContainer = "dc-sdk-demo"
  13. sql = "delete-sdk-demo"
  14. )
  15. var (
  16. dataSourceSpec = sdk.DataSourceDatabaseSpec{
  17. Type: sdk.DataSourceDatabaseTypePostgres,
  18. UserName: "test",
  19. Password: "123456",
  20. Address: "localhost",
  21. Port: "30432",
  22. Database: "test",
  23. MaxConnections: 40,
  24. MaxIdleConnections: 10,
  25. }
  26. dataContainerSpec = sdk.DataContainerDatabaseSpec{
  27. TableName: "test.classes",
  28. Columns: []sdk.DataContainerDatabaseColumnSpec{
  29. {
  30. Name: "id",
  31. Type: "varchar(32)",
  32. Comment: "id",
  33. PrimaryKey: true,
  34. },
  35. {
  36. Name: "name",
  37. Type: "varchar(128)",
  38. Comment: "班名",
  39. NotNull: true,
  40. },
  41. {
  42. Name: "student_num",
  43. Type: "integer",
  44. Comment: "学生数量",
  45. Default: 60,
  46. },
  47. },
  48. }
  49. sqlSpec = sdk.SqlSpec{
  50. Transaction: false,
  51. Clauses: "- DELETE FROM test.classes WHERE id = '{{ .id }}'",
  52. }
  53. )
  54. func main() {
  55. classID := strutils.SimpleUUID()
  56. className := strutils.SimpleUUID()
  57. studentNum := rand.Int31n(100)
  58. newClassName := strutils.SimpleUUID()
  59. newStudentNum := rand.Int31n(100)
  60. err := sdk.InitInstance(token, baseUrl, namespace, &sdk.DataSourceOption{
  61. Name: dataSource,
  62. Type: sdk.DataSourceTypeDatabase,
  63. Spec: dataSourceSpec.ToMap(),
  64. })
  65. if err != nil {
  66. panic(err)
  67. }
  68. defer func() {
  69. err := sdk.DestroyInstance()
  70. if err != nil {
  71. panic(err)
  72. }
  73. }()
  74. err = sdk.GetInstance().CreateDataContainer(dataContainer, dataContainerSpec.ToMap())
  75. if err != nil {
  76. panic(err)
  77. }
  78. err = sdk.GetInstance().GetDBOperations().NewSession().
  79. Table("test.classes").
  80. Create(map[string]any{
  81. "id": classID,
  82. "name": className,
  83. "student_num": studentNum,
  84. })
  85. if err != nil {
  86. panic(err)
  87. }
  88. err = sdk.GetInstance().GetDBOperations().NewSession().
  89. Table("test.classes").
  90. Where("id = ?", classID).
  91. Delete()
  92. if err != nil {
  93. panic(err)
  94. }
  95. err = sdk.GetInstance().GetDBOperations().NewSession().
  96. Table("test.classes").
  97. Create(map[string]any{
  98. "id": classID,
  99. "name": className,
  100. "student_num": studentNum,
  101. })
  102. if err != nil {
  103. panic(err)
  104. }
  105. tx := sdk.GetInstance().GetDBOperations().BeginTransaction()
  106. _, err = tx.
  107. Raw("UPDATE test.classes SET name = ?, student_num = ? WHERE id = ?", newClassName, newStudentNum, classID).
  108. Rows(0, 0)
  109. if err != nil {
  110. tx.RollbackTransaction()
  111. panic(err)
  112. }
  113. tx.CommitTransaction()
  114. tableRow, err := sdk.GetInstance().GetDBOperations().NewSession().
  115. Table("test.classes").
  116. Where("id = ?", classID).
  117. Row()
  118. if err != nil {
  119. panic(err)
  120. }
  121. if tableRow["id"] != classID || tableRow["name"] != newClassName || tableRow["student_num"] != newStudentNum {
  122. panic("数据查询错误")
  123. }
  124. err = sdk.GetInstance().CreateSQL(sql, sqlSpec.ToMap())
  125. if err != nil {
  126. panic(err)
  127. }
  128. _, err = sdk.GetInstance().ExecuteSql(sql, map[string]any{"id": classID})
  129. if err != nil {
  130. panic(err)
  131. }
  132. err = sdk.GetInstance().DeleteSQL(sql)
  133. if err != nil {
  134. panic(err)
  135. }
  136. err = sdk.GetInstance().DeleteDataContainer(dataContainer)
  137. if err != nil {
  138. panic(err)
  139. }
  140. }