package dpsapi import ( "errors" "fmt" "git.sxidc.com/go-tools/api_binding/http_binding" "git.sxidc.com/go-tools/api_binding/http_binding/binding_context" "git.sxidc.com/go-tools/api_binding/http_binding/response" "git.sxidc.com/service-supports/dps-sdk" "git.sxidc.com/service-supports/dps-sdk/client" ) func ApiV1(binding *http_binding.Binding, dpsAddress string) { http_binding.PostBind(binding, &http_binding.SimpleBindItem[OperateFromRequest, any]{ Path: "/dpsv1/database/operate", ResponseFunc: response.SendMsgResponse, BusinessFunc: func(c *binding_context.Context, inputModel OperateFromRequest) (any, error) { parsedClauses, err := parseSql(inputModel.SQL) if err != nil { return nil, err } dpsClient, err := dps.NewClient(dpsAddress, "v1", inputModel.DatabaseID) if err != nil { return nil, err } err = dpsClient.Transaction(func(tx client.Transaction) error { for _, parsedClause := range parsedClauses { switch clause := parsedClause.(type) { case *insertClause: fmt.Printf("%+#v\n", clause) case *deleteClause: fmt.Printf("%+#v\n", clause) case *updateClause: fmt.Printf("%+#v\n", clause) case *selectClause: fmt.Printf("%+#v\n", clause) default: return errors.New("不支持的SQL语句") } } return nil }) if err != nil { return nil, err } return nil, nil }, }) }