main.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. package main
  2. import (
  3. "git.sxidc.com/go-framework/baize"
  4. "git.sxidc.com/go-framework/baize/application"
  5. "git.sxidc.com/go-framework/baize/binding/request"
  6. "git.sxidc.com/go-framework/baize/convenient/entity"
  7. "git.sxidc.com/go-framework/baize/domain"
  8. "git.sxidc.com/go-framework/baize/infrastructure"
  9. "git.sxidc.com/go-framework/baize/infrastructure/database/data_service"
  10. DEATH "github.com/vrecan/death"
  11. "syscall"
  12. "time"
  13. )
  14. // curl -X POST -H "Content-Type: application/json" -d '{"name":"test", "studentNum": 10}' "http://localhost:10100/test/v1/class/create"
  15. // curl -X PUT -H "Content-Type: application/json" -d '{"id":"92cede40e5464ff79541418a7fc738ec", "name":"test-new"}' "http://localhost:10100/test/v1/class/update"
  16. // curl -X GET "http://localhost:10100/test/v1/class/query?name=test-new&pageNo=1&pageSize=1"
  17. // curl -X GET "http://localhost:10100/test/v1/class/get?id=92cede40e5464ff79541418a7fc738ec"
  18. // curl -X DELETE "http://localhost:10100/test/v1/class/92cede40e5464ff79541418a7fc738ec/delete"
  19. type CreateClassJsonBody struct {
  20. Name string `json:"name" binding:"required" assign:"toField:Name"`
  21. StudentNum int `json:"studentNum" binding:"required" assign:"toField:StudentNum"`
  22. }
  23. type DeleteClassPathParams struct {
  24. request.IDPath
  25. }
  26. type UpdateClassJsonBody struct {
  27. request.IDJsonBody
  28. Name string `json:"name" assign:"toField:Name"`
  29. StudentNum int `json:"studentNum" assign:"toField:StudentNum"`
  30. }
  31. type QueryClassesQueryParams struct {
  32. Name string `form:"name" assign:"toField:Name"`
  33. StudentNum int `form:"studentNum" assign:"toField:StudentNum"`
  34. request.BaseQuery
  35. }
  36. type GetClassQueryParams struct {
  37. request.IDQuery
  38. }
  39. type Class struct {
  40. domain.BaseEntity
  41. Name string `sqlmapping:"column:name"`
  42. StudentNum int `sqlmapping:"column:student_num"`
  43. CreatedTime time.Time
  44. LastUpdatedTime *time.Time
  45. }
  46. func (class *Class) DomainCNName() string {
  47. return "班级"
  48. }
  49. type InfoIDField struct {
  50. ID string `json:"id" sqlresult:"column:id"`
  51. }
  52. type ClassInfo struct {
  53. *InfoIDField
  54. Name string `json:"name" sqlresult:"column:name"`
  55. StudentNum int `json:"studentNum" sqlresult:"column:student_num"`
  56. CreatedTime string `sqlresult:"parseTime:'2006-01-02 15:04:05'"`
  57. LastUpdatedTime string `sqlresult:"parseTime:'2006-01-02 15:04:05'"`
  58. }
  59. const (
  60. tableName = "test.classes"
  61. )
  62. func main() {
  63. app := baize.NewApplication(application.Config{
  64. ApiConfig: application.ApiConfig{
  65. UrlPrefix: "test",
  66. Port: "10100",
  67. },
  68. InfrastructureConfig: application.InfrastructureConfig{
  69. Database: infrastructure.DatabaseConfig{
  70. DataService: &data_service.Config{
  71. Token: "8qe+uPgpQ2JWxu3lSyOx5NjX+INp5WsnoD1ZWb7PBm4=",
  72. BaseUrl: "http://localhost:10000",
  73. GrpcAddress: "localhost:10001",
  74. Namespace: "baize",
  75. DataSource: "baize-binding",
  76. TimeoutSec: 30,
  77. },
  78. },
  79. },
  80. })
  81. defer func() {
  82. baize.DestroyApplication(app)
  83. }()
  84. app.Api().
  85. PrefixRouter().
  86. RegisterVersionedRouter("v1")
  87. entity.BindSimple[ClassInfo](app.Binder("v1"), &entity.Simple[ClassInfo]{
  88. Entity: &Class{},
  89. TableName: tableName,
  90. DomainPath: "/class",
  91. CreateJsonBody: &CreateClassJsonBody{},
  92. DeleteQueryParams: &DeleteClassPathParams{},
  93. UpdateJsonBody: &UpdateClassJsonBody{},
  94. QueryParams: &QueryClassesQueryParams{},
  95. GetByIDQueryParams: &GetClassQueryParams{},
  96. }, entity.WithUpdateTx[ClassInfo](), entity.WithDeleteTx[ClassInfo]())
  97. go func() {
  98. err := app.Start()
  99. if err != nil {
  100. panic(err)
  101. }
  102. }()
  103. defer func() {
  104. err := app.Finish()
  105. if err != nil {
  106. panic(err)
  107. }
  108. }()
  109. death := DEATH.NewDeath(syscall.SIGINT, syscall.SIGTERM)
  110. _ = death.WaitForDeath()
  111. }