diff --git a/client_test.go b/client_test.go index fce04fd..53b64f4 100644 --- a/client_test.go +++ b/client_test.go @@ -406,7 +406,7 @@ func TestQueryDatabase(t *testing.T) { { name: "with query, successful response", query: ¬ion.DatabaseQuery{ - Filter: notion.DatabaseQueryFilter{ + Filter: ¬ion.DatabaseQueryFilter{ Property: "Name", Text: ¬ion.TextDatabaseQueryFilter{ Contains: "foobar", @@ -775,7 +775,7 @@ func TestQueryDatabase(t *testing.T) { expError: nil, }, { - name: "without query, successful response", + name: "without query, doesn't send POST body", query: nil, respBody: func(_ *http.Request) io.Reader { return strings.NewReader( @@ -796,6 +796,28 @@ func TestQueryDatabase(t *testing.T) { }, expError: nil, }, + { + name: "with non nil query, but without fields, omits all fields from POST body", + query: ¬ion.DatabaseQuery{}, + respBody: func(_ *http.Request) io.Reader { + return strings.NewReader( + `{ + "object": "list", + "results": [], + "next_cursor": null, + "has_more": false + }`, + ) + }, + respStatusCode: http.StatusOK, + expPostBody: map[string]interface{}{}, + expResponse: notion.DatabaseQueryResponse{ + Results: []notion.Page{}, + HasMore: false, + NextCursor: nil, + }, + expError: nil, + }, { name: "error response", respBody: func(_ *http.Request) io.Reader { diff --git a/database.go b/database.go index 8af0f40..0ae2231 100644 --- a/database.go +++ b/database.go @@ -91,10 +91,10 @@ type DatabaseProperty struct { // DatabaseQuery is used for quering a database. type DatabaseQuery struct { - Filter DatabaseQueryFilter `json:"filter,omitempty"` - Sorts []DatabaseQuerySort `json:"sorts,omitempty"` - StartCursor string `json:"start_cursor,omitempty"` - PageSize int `json:"page_size,omitempty"` + Filter *DatabaseQueryFilter `json:"filter,omitempty"` + Sorts []DatabaseQuerySort `json:"sorts,omitempty"` + StartCursor string `json:"start_cursor,omitempty"` + PageSize int `json:"page_size,omitempty"` } // DatabaseQueryResponse contains the results and pagination data from a query request.