diff --git a/index_documents.go b/index_documents.go index 7bb01182..20a99bc7 100644 --- a/index_documents.go +++ b/index_documents.go @@ -15,6 +15,10 @@ import ( "strings" ) +// NoLimit should be used to set Limit field value +// on DocumentsQuery struct to return all documents. +var NoLimit int64 = math.MinInt64 + func transformStringVariadicToMap(primaryKey ...string) (options map[string]string) { if primaryKey != nil { return map[string]string{ @@ -186,7 +190,7 @@ func (i Index) GetDocuments(request *DocumentsQuery, resp *DocumentsResult) erro } if request != nil && request.Filter == nil { req.withQueryParams = map[string]string{} - if request.Limit != 0 { + if request.Limit != NoLimit { req.withQueryParams["limit"] = strconv.FormatInt(request.Limit, 10) } if request.Offset != 0 { diff --git a/index_documents_test.go b/index_documents_test.go index 77b60b23..8923ec80 100644 --- a/index_documents_test.go +++ b/index_documents_test.go @@ -638,7 +638,7 @@ func TestIndex_AddDocumentsCsv(t *testing.T) { testWaitForTask(t, i, gotResp) var documents DocumentsResult - err = i.GetDocuments(&DocumentsQuery{}, &documents) + err = i.GetDocuments(&DocumentsQuery{Limit: NoLimit}, &documents) require.NoError(t, err) require.Equal(t, wantDocs, documents.Results) }) @@ -756,7 +756,7 @@ func TestIndex_AddDocumentsCsvWithOptions(t *testing.T) { testWaitForTask(t, i, gotResp) var documents DocumentsResult - err = i.GetDocuments(&DocumentsQuery{}, &documents) + err = i.GetDocuments(&DocumentsQuery{Limit: NoLimit}, &documents) require.NoError(t, err) require.Equal(t, wantDocs, documents.Results) }) @@ -854,7 +854,7 @@ func TestIndex_AddDocumentsCsvInBatches(t *testing.T) { testWaitForBatchTask(t, i, gotResp) var documents DocumentsResult - err = i.GetDocuments(&DocumentsQuery{}, &documents) + err = i.GetDocuments(&DocumentsQuery{Limit: NoLimit}, &documents) require.NoError(t, err) require.Equal(t, wantDocs, documents.Results) }) @@ -959,7 +959,7 @@ func TestIndex_AddDocumentsNdjson(t *testing.T) { testWaitForTask(t, i, gotResp) var documents DocumentsResult - err = i.GetDocuments(&DocumentsQuery{}, &documents) + err = i.GetDocuments(&DocumentsQuery{Limit: NoLimit}, &documents) require.NoError(t, err) require.Equal(t, wantDocs, documents.Results) }) @@ -1057,7 +1057,7 @@ func TestIndex_AddDocumentsNdjsonInBatches(t *testing.T) { testWaitForBatchTask(t, i, gotResp) var documents DocumentsResult - err = i.GetDocuments(&DocumentsQuery{}, &documents) + err = i.GetDocuments(&DocumentsQuery{Limit: NoLimit}, &documents) require.NoError(t, err) require.Equal(t, wantDocs, documents.Results) }) @@ -1734,7 +1734,7 @@ func TestIndex_GetDocuments(t *testing.T) { err := i.GetDocuments(tt.args.request, tt.args.resp) require.NoError(t, err) - if tt.args.request != nil && tt.args.request.Limit != 0 { + if tt.args.request != nil && tt.args.request.Limit != NoLimit { require.Equal(t, tt.args.request.Limit, int64(len(tt.args.resp.Results))) } require.Equal(t, tt.result, int64(len(tt.args.resp.Results))) @@ -2192,7 +2192,7 @@ func TestIndex_UpdateDocumentsCsv(t *testing.T) { testWaitForTask(t, i, gotResp) var documents DocumentsResult - err = i.GetDocuments(&DocumentsQuery{}, &documents) + err = i.GetDocuments(&DocumentsQuery{Limit: NoLimit}, &documents) require.NoError(t, err) require.Equal(t, wantDocs, documents.Results) }) @@ -2310,7 +2310,7 @@ func TestIndex_UpdateDocumentsCsvWithOptions(t *testing.T) { testWaitForTask(t, i, gotResp) var documents DocumentsResult - err = i.GetDocuments(&DocumentsQuery{}, &documents) + err = i.GetDocuments(&DocumentsQuery{Limit: NoLimit}, &documents) require.NoError(t, err) require.Equal(t, wantDocs, documents.Results) }) @@ -2408,7 +2408,7 @@ func TestIndex_UpdateDocumentsCsvInBatches(t *testing.T) { testWaitForBatchTask(t, i, gotResp) var documents DocumentsResult - err = i.GetDocuments(&DocumentsQuery{}, &documents) + err = i.GetDocuments(&DocumentsQuery{Limit: NoLimit}, &documents) require.NoError(t, err) require.Equal(t, wantDocs, documents.Results) }) @@ -2489,7 +2489,7 @@ func TestIndex_UpdateDocumentsNdjson(t *testing.T) { testWaitForTask(t, i, gotResp) var documents DocumentsResult - err = i.GetDocuments(&DocumentsQuery{}, &documents) + err = i.GetDocuments(&DocumentsQuery{Limit: NoLimit}, &documents) require.NoError(t, err) require.Equal(t, wantDocs, documents.Results) }) @@ -2587,7 +2587,7 @@ func TestIndex_UpdateDocumentsNdjsonInBatches(t *testing.T) { testWaitForBatchTask(t, i, gotResp) var documents DocumentsResult - err = i.GetDocuments(&DocumentsQuery{}, &documents) + err = i.GetDocuments(&DocumentsQuery{Limit: NoLimit}, &documents) require.NoError(t, err) require.Equal(t, wantDocs, documents.Results) }) diff --git a/types.go b/types.go index f25c22a8..477b1145 100644 --- a/types.go +++ b/types.go @@ -352,6 +352,10 @@ type DocumentQuery struct { type DocumentsQuery struct { Offset int64 `json:"offset,omitempty"` Limit int64 `json:"limit,omitempty"` + // Limit sets the numbers of returned documents from the + // search queries. The limit can be zero for explicitly + // return nothing. For retrieving all + // returned documents, use NoLimit. Fields []string `json:"fields,omitempty"` Filter interface{} `json:"filter,omitempty"` }