sql_executor.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package domain_gateway
  2. import (
  3. "git.sxidc.com/go-framework/baize/framework/core/api"
  4. "git.sxidc.com/go-framework/baize/framework/gateway"
  5. "git.sxidc.com/go-tools/utils/strutils"
  6. "github.com/pkg/errors"
  7. "net/http"
  8. )
  9. func SqlExecutorGateway(baseUrlNoUrlPrefix string, builder *gateway.Builder) {
  10. builder.
  11. Url(http.MethodPost, "/sql/execute").
  12. Request(func(c *api.Context, historyRequests []gateway.BuilderRequest, resultMap map[string]any) (gateway.BuilderRequest, error) {
  13. err := gateway.AddJsonBodyTenantIDAndUserID(c, "", "executorId")
  14. if err != nil {
  15. return nil, err
  16. }
  17. jsonBody, err := c.GetJsonBody()
  18. if err != nil {
  19. return nil, err
  20. }
  21. userInfo := c.GetUserInfo()
  22. if userInfo == nil {
  23. jsonBody.Set("executorName", "guest")
  24. } else {
  25. jsonBody.Set("executorName", userInfo.GetName)
  26. }
  27. urlPrefixValue := jsonBody.Get("urlPrefix")
  28. if urlPrefixValue == nil {
  29. return nil, errors.New("没有传递服务名")
  30. }
  31. urlPrefix, ok := urlPrefixValue.(string)
  32. if !ok {
  33. return nil, errors.New("服务名不是string类型")
  34. }
  35. jsonBody.Delete("urlPrefix")
  36. return &gateway.PostRequest{
  37. Url: baseUrlNoUrlPrefix + "/" + urlPrefix + "/api/sql/execute",
  38. Body: jsonBody.Map(),
  39. }, nil
  40. }, nil).
  41. Build()
  42. builder.
  43. Url(http.MethodGet, "/sql/execute/log").
  44. Request(func(c *api.Context, historyRequests []gateway.BuilderRequest, resultMap map[string]any) (gateway.BuilderRequest, error) {
  45. err := gateway.AddQueryParamsTenantIDAndUserID(c, "", "executorId")
  46. if err != nil {
  47. return nil, err
  48. }
  49. queryParams := c.GetQueryParams()
  50. urlPrefix := queryParams.Get("urlPrefix")
  51. if strutils.IsStringEmpty(urlPrefix) {
  52. return nil, errors.New("没有传递服务名")
  53. }
  54. queryParams.Delete("urlPrefix")
  55. return &gateway.GetRequest{
  56. Url: baseUrlNoUrlPrefix + "/" + urlPrefix + "/api/sql/execute/log",
  57. QueryParams: queryParams.Map(),
  58. }, nil
  59. }, nil).
  60. Build()
  61. }