From eaa12f9290bcd64e973aea81b842c947696b5760 Mon Sep 17 00:00:00 2001 From: Mike Berezin Date: Fri, 29 Jan 2021 13:21:39 +0300 Subject: [PATCH] feat: add bulk partial update method and tests --- table.go | 14 ++++++++++++++ table_test.go | 19 +++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/table.go b/table.go index a9bf2a9..b432326 100644 --- a/table.go +++ b/table.go @@ -75,6 +75,20 @@ func (t *Table) UpdateRecords(records *Records) (*Records, error) { return response, nil } +// UpdateRecordsPartial partial update records +func (t *Table) UpdateRecordsPartial(records *Records) (*Records, error) { + response := new(Records) + err := t.client.patch(t.dbName, t.tableName, records, response) + if err != nil { + return nil, err + } + for _, record := range response.Records { + record.client = t.client + record.table = t + } + return response, nil +} + // DeleteRecords delete records by recordID func (t *Table) DeleteRecords(recordIDs []string) (*Records, error) { response := new(Records) diff --git a/table_test.go b/table_test.go index ca744ef..5c90eb0 100644 --- a/table_test.go +++ b/table_test.go @@ -68,6 +68,25 @@ func TestTable_UpdateRecords(t *testing.T) { } } +func TestTable_UpdateRecordsPartial(t *testing.T) { + table := testTable(t) + table.client.baseURL = mockResponse("get_records_with_filter.json").URL + toSend := new(Records) + records, err := table.UpdateRecordsPartial(toSend) + if err != nil { + t.Error("must be no error") + } + if len(records.Records) != 3 { + t.Errorf("should be 3 records in result, but was: %v", len(records.Records)) + } + table.client.baseURL = mockErrorResponse(404).URL + _, err = table.UpdateRecordsPartial(toSend) + var e *HTTPClientError + if errors.Is(err, e) { + t.Errorf("should be an http error, but was not: %v", err) + } +} + func testTable(t *testing.T) *Table { client := testClient(t) return client.GetTable("dbName", "tableName")