simple.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. package value_object
  2. import (
  3. "git.sxidc.com/go-framework/baize/binding"
  4. "git.sxidc.com/go-framework/baize/binding/request"
  5. "git.sxidc.com/go-framework/baize/binding/response"
  6. "git.sxidc.com/go-framework/baize/domain"
  7. )
  8. func BindSimple[O any](binder *binding.Binder, crud *Simple[O]) {
  9. crud.bind(binder)
  10. }
  11. // Simple 实体CRUD的Bind参数
  12. type Simple[O any] struct {
  13. // 使用的领域实体,注意是ValueObject类型
  14. ValueObject domain.ValueObject
  15. // 表名
  16. TableName string
  17. // 选择要使用的数据库Executor
  18. // DBExecutorOperations operations 数据库操作
  19. // DBExecutorDataService data_service 数据服务
  20. DBExecutorType string
  21. // URL领域相对路径,如/class,后面会自动补充
  22. DomainPath string
  23. // 创建使用的请求参数
  24. CreateJsonBody request.Params
  25. // 创建是否使用事务
  26. CreateNeedTx bool
  27. // 创建回调
  28. CreateCallbacks *Callbacks[any]
  29. // 删除使用的请求参数,注意是WithID类型
  30. DeleteQueryParams request.WithID
  31. // 删除是否使用事务
  32. DeleteNeedTx bool
  33. // 删除回调
  34. DeleteCallbacks *Callbacks[any]
  35. // 查询使用的请求参数,注意是Query类型
  36. QueryParams request.Query
  37. // 查询条件构造回调
  38. QueryConditionFieldCallback ConditionFieldCallback
  39. // 查询回调
  40. QueryCallbacks *Callbacks[response.InfosData[O]]
  41. }
  42. func (crud *Simple[O]) bind(binder *binding.Binder) {
  43. dbExecutor := binder.ChooseDBExecutor(crud.DBExecutorType)
  44. // 创建
  45. if !crud.CreateNeedTx {
  46. binding.PostBind(binder, &binding.SimpleBindItem[any]{
  47. Path: crud.DomainPath + "/create",
  48. ResponseFunc: response.SendMsgResponse,
  49. RequestParams: crud.CreateJsonBody,
  50. Objects: []domain.Object{crud.ValueObject},
  51. ServiceFunc: Create(crud.TableName, dbExecutor, crud.CreateCallbacks),
  52. })
  53. } else {
  54. binding.PostBind(binder, &binding.SimpleBindItem[any]{
  55. Path: crud.DomainPath + "/create",
  56. ResponseFunc: response.SendMsgResponse,
  57. RequestParams: crud.CreateJsonBody,
  58. Objects: []domain.Object{crud.ValueObject},
  59. ServiceFunc: CreateTx(crud.TableName, dbExecutor, crud.CreateCallbacks),
  60. })
  61. }
  62. // 删除班级
  63. if !crud.DeleteNeedTx {
  64. binding.DeleteBind(binder, &binding.SimpleBindItem[any]{
  65. Path: crud.DomainPath + "/:id/delete",
  66. ResponseFunc: response.SendMsgResponse,
  67. RequestParams: crud.DeleteQueryParams,
  68. Objects: []domain.Object{crud.ValueObject},
  69. ServiceFunc: Delete(crud.TableName, dbExecutor, crud.DeleteCallbacks),
  70. })
  71. } else {
  72. binding.DeleteBind(binder, &binding.SimpleBindItem[any]{
  73. Path: crud.DomainPath + "/:id/delete",
  74. ResponseFunc: response.SendMsgResponse,
  75. RequestParams: crud.DeleteQueryParams,
  76. Objects: []domain.Object{crud.ValueObject},
  77. ServiceFunc: DeleteTx(crud.TableName, dbExecutor, crud.DeleteCallbacks),
  78. })
  79. }
  80. // 查询班级
  81. binding.GetBind(binder, &binding.SimpleBindItem[response.InfosData[O]]{
  82. Path: crud.DomainPath + "/query",
  83. ResponseFunc: response.SendInfosResponse[O],
  84. RequestParams: crud.QueryParams,
  85. Objects: []domain.Object{crud.ValueObject},
  86. ServiceFunc: Query(crud.TableName, dbExecutor, crud.QueryCallbacks, crud.QueryConditionFieldCallback),
  87. })
  88. }