v1.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package dpsapi
  2. import (
  3. "errors"
  4. "fmt"
  5. "git.sxidc.com/go-tools/api_binding/http_binding"
  6. "git.sxidc.com/go-tools/api_binding/http_binding/binding_context"
  7. "git.sxidc.com/go-tools/api_binding/http_binding/response"
  8. "git.sxidc.com/service-supports/dps-sdk"
  9. "git.sxidc.com/service-supports/dps-sdk/client"
  10. )
  11. func ApiV1(binding *http_binding.Binding, dpsAddress string) {
  12. http_binding.PostBind(binding, &http_binding.SimpleBindItem[OperateFromRequest, any]{
  13. Path: "/dpsv1/database/operate",
  14. ResponseFunc: response.SendMsgResponse,
  15. BusinessFunc: func(c *binding_context.Context, inputModel OperateFromRequest) (any, error) {
  16. parsedClauses, err := parseSql(inputModel.SQL)
  17. if err != nil {
  18. return nil, err
  19. }
  20. dpsClient, err := dps.NewClient(dpsAddress, "v1", inputModel.DatabaseID)
  21. if err != nil {
  22. return nil, err
  23. }
  24. err = dpsClient.Transaction(func(tx client.Transaction) error {
  25. for _, parsedClause := range parsedClauses {
  26. switch clause := parsedClause.(type) {
  27. case *insertClause:
  28. fmt.Printf("%+#v\n", clause)
  29. case *deleteClause:
  30. fmt.Printf("%+#v\n", clause)
  31. case *updateClause:
  32. fmt.Printf("%+#v\n", clause)
  33. case *selectClause:
  34. fmt.Printf("%+#v\n", clause)
  35. default:
  36. return errors.New("不支持的SQL语句")
  37. }
  38. }
  39. return nil
  40. })
  41. if err != nil {
  42. return nil, err
  43. }
  44. return nil, nil
  45. },
  46. })
  47. }