Эх сурвалжийг харах

完成insert batch接口开发

yjp 1 жил өмнө
parent
commit
ab98e2629b
2 өөрчлөгдсөн 36 нэмэгдсэн , 1 устгасан
  1. 35 1
      dpsv1/client.go
  2. 1 0
      ports/client.go

+ 35 - 1
dpsv1/client.go

@@ -92,7 +92,41 @@ func (c *Client) Insert(req *ports.InsertRequest) (string, error) {
 	return reply.Statement, nil
 }
 
-// TODO InsertBatch
+func (c *Client) InsertBatch(req *ports.InsertBatchRequest) (string, error) {
+	tableItems := make([]*request.InsertTableItem, 0)
+
+	for _, reqTableItem := range req.Items {
+		items := make([]*request.InsertItem, 0)
+		for _, reqItem := range reqTableItem.Items {
+			tableRow, err := c.formTableRow(reqItem.TableRow)
+			if err != nil {
+				return "", err
+			}
+
+			items = append(items, &request.InsertItem{
+				KeyColumns: reqItem.KeyColumns,
+				TableRow:   tableRow,
+			})
+		}
+
+		tableItems = append(tableItems, &request.InsertTableItem{
+			TablePrefixWithSchema: reqTableItem.TablePrefixWithSchema,
+			Version:               reqTableItem.Version,
+			Items:                 items,
+		})
+	}
+
+	reply, err := c.commandServiceClient.InsertBatch(context.Background(), &request.InsertBatchRequest{
+		DatabaseID: req.DatabaseID,
+		Items:      tableItems,
+		UserID:     req.UserID,
+	})
+	if err != nil {
+		return "", err
+	}
+
+	return reply.Statement, nil
+}
 
 func (c *Client) Delete(req *ports.DeleteRequest) (string, error) {
 	reply, err := c.commandServiceClient.Delete(context.Background(), &request.DeleteRequest{

+ 1 - 0
ports/client.go

@@ -15,6 +15,7 @@ const (
 type Client interface {
 	AutoMigrate(request *AutoMigrateRequest) error
 	Insert(request *InsertRequest) (string, error)
+	InsertBatch(request *InsertBatchRequest) (string, error)
 	Delete(request *DeleteRequest) (string, error)
 	Update(request *UpdateRequest) (string, error)
 	Replay(req *ReplayRequest) (string, error)