sql.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package client
  2. import (
  3. "fmt"
  4. "net/url"
  5. )
  6. const (
  7. executeRawSqlUrl = "/ds/api/v1/sql/rawSql/execute"
  8. executeSqlUrl = "/ds/api/v1/sql/execute"
  9. )
  10. func (c *Client) ExecuteRawSql(token string, baseUrl string,
  11. namespace string, dataSource string, sql string, executeParams map[string]any) ([]map[string]any, error) {
  12. fullUrl, err := url.JoinPath(baseUrl, executeRawSqlUrl)
  13. if err != nil {
  14. return nil, err
  15. }
  16. resp := new(struct {
  17. Success bool `json:"success"`
  18. Msg string `json:"msg"`
  19. Results []map[string]any `json:"results"`
  20. })
  21. err = c.post(token, fullUrl, map[string]any{
  22. "namespace": namespace,
  23. "dataSource": dataSource,
  24. "sql": sql,
  25. "executeParams": executeParams,
  26. }, resp)
  27. if err != nil {
  28. return nil, err
  29. }
  30. if !resp.Success {
  31. return nil, fmt.Errorf(resp.Msg)
  32. }
  33. return resp.Results, nil
  34. }
  35. func (c *Client) ExecuteSql(token string, baseUrl string,
  36. namespace string, dataSource string, name string, executeParams map[string]any) ([]map[string]any, error) {
  37. fullUrl, err := url.JoinPath(baseUrl, executeSqlUrl)
  38. if err != nil {
  39. return nil, err
  40. }
  41. resp := new(struct {
  42. Success bool `json:"success"`
  43. Msg string `json:"msg"`
  44. Results []map[string]any `json:"results"`
  45. })
  46. err = c.post(token, fullUrl, map[string]any{
  47. "namespace": namespace,
  48. "dataSource": dataSource,
  49. "name": name,
  50. "executeParams": executeParams,
  51. }, resp)
  52. if err != nil {
  53. return nil, err
  54. }
  55. if !resp.Success {
  56. return nil, fmt.Errorf(resp.Msg)
  57. }
  58. return resp.Results, nil
  59. }