ソースを参照

完成批量删除

yjp 1 年間 前
コミット
36bb2ff235
2 ファイル変更30 行追加1 行削除
  1. 29 1
      dpsv1/client.go
  2. 1 0
      ports/client.go

+ 29 - 1
dpsv1/client.go

@@ -143,7 +143,35 @@ func (c *Client) Delete(req *ports.DeleteRequest) (string, error) {
 	return reply.Statement, nil
 }
 
-// TODO DeleteBatch
+func (c *Client) DeleteBatch(req *ports.DeleteBatchRequest) (string, error) {
+	tableItems := make([]*request.DeleteTableItem, 0)
+
+	for _, reqTableItem := range req.Items {
+		items := make([]*request.DeleteItem, 0)
+		for _, reqItem := range reqTableItem.Items {
+			items = append(items, &request.DeleteItem{
+				KeyValues: reqItem.KeyValues,
+			})
+		}
+
+		tableItems = append(tableItems, &request.DeleteTableItem{
+			TablePrefixWithSchema: reqTableItem.TablePrefixWithSchema,
+			Version:               reqTableItem.Version,
+			Items:                 items,
+		})
+	}
+
+	reply, err := c.commandServiceClient.DeleteBatch(context.Background(), &request.DeleteBatchRequest{
+		DatabaseID: req.DatabaseID,
+		Items:      tableItems,
+		UserID:     req.UserID,
+	})
+	if err != nil {
+		return "", err
+	}
+
+	return reply.Statement, nil
+}
 
 func (c *Client) Update(req *ports.UpdateRequest) (string, error) {
 	newTableRowJsonByte, err := c.formTableRow(req.NewTableRow)

+ 1 - 0
ports/client.go

@@ -17,6 +17,7 @@ type Client interface {
 	Insert(request *InsertRequest) (string, error)
 	InsertBatch(request *InsertBatchRequest) (string, error)
 	Delete(request *DeleteRequest) (string, error)
+	DeleteBatch(request *DeleteBatchRequest) (string, error)
 	Update(request *UpdateRequest) (string, error)
 	Replay(req *ReplayRequest) (string, error)
 	QueryByWhereAndOrderBy(request *QueryByWhereAndOrderByRequest) (string, []map[string]any, int64, error)