demo.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  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. err := sdk.InitInstance(token, baseUrl, namespace, &sdk.DataSourceOption{
  59. Name: dataSource,
  60. Type: sdk.DataSourceTypeDatabase,
  61. Spec: dataSourceSpec.ToMap(),
  62. })
  63. if err != nil {
  64. panic(err)
  65. }
  66. defer func() {
  67. err := sdk.DestroyInstance()
  68. if err != nil {
  69. panic(err)
  70. }
  71. }()
  72. err = sdk.GetInstance().CreateDataContainer(dataContainer, dataContainerSpec.ToMap())
  73. if err != nil {
  74. panic(err)
  75. }
  76. err = sdk.GetInstance().GetDBOperations().NewSession().
  77. Table("test.classes").
  78. Create(map[string]any{
  79. "id": classID,
  80. "name": className,
  81. "student_num": studentNum,
  82. })
  83. if err != nil {
  84. panic(err)
  85. }
  86. err = sdk.GetInstance().GetDBOperations().NewSession().
  87. Table("test.classes").
  88. Where("id = ?", classID).
  89. Delete()
  90. if err != nil {
  91. panic(err)
  92. }
  93. err = sdk.GetInstance().GetDBOperations().NewSession().
  94. Table("test.classes").
  95. Create(map[string]any{
  96. "id": classID,
  97. "name": className,
  98. "student_num": studentNum,
  99. })
  100. if err != nil {
  101. panic(err)
  102. }
  103. tableRow, err := sdk.GetInstance().GetDBOperations().NewSession().
  104. Table("test.classes").
  105. Where("id = ?", classID).
  106. Row()
  107. if err != nil {
  108. panic(err)
  109. }
  110. if tableRow["id"] != classID || tableRow["name"] != className || tableRow["student_num"] != studentNum {
  111. panic("数据查询错误")
  112. }
  113. err = sdk.GetInstance().CreateSQL(sql, sqlSpec.ToMap())
  114. if err != nil {
  115. panic(err)
  116. }
  117. _, err = sdk.GetInstance().ExecuteSql(sql, map[string]any{"id": classID})
  118. if err != nil {
  119. panic(err)
  120. }
  121. err = sdk.GetInstance().DeleteSQL(sql)
  122. if err != nil {
  123. panic(err)
  124. }
  125. err = sdk.GetInstance().DeleteDataContainer(dataContainer)
  126. if err != nil {
  127. panic(err)
  128. }
  129. }