Skip to content

Commit 08e0fa6

Browse files
spinachClément Le Provost
authored andcommitted
3 params added to the client in order to support all params in the doc: (#369)
- offset - length - disableExactOnAttributes
1 parent b1cc045 commit 08e0fa6

File tree

3 files changed

+90
-0
lines changed

3 files changed

+90
-0
lines changed

Source/Query.swift

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -338,6 +338,13 @@ open class Query : AbstractQuery {
338338
}
339339
}
340340

341+
/// List of attributes on which you want to disable computation of the `exact` ranking criterion
342+
/// The list must be a subset of the `searchableAttributes` index setting.
343+
@objc public var disableExactOnAttributes: [String]? {
344+
get { return Query.parseStringArray(self["disableExactOnAttributes"]) }
345+
set { self["disableExactOnAttributes"] = Query.buildJSONArray(newValue) }
346+
}
347+
341348
/// Applicable values for the `exactOnSingleWordQuery` parameter.
342349
public enum ExactOnSingleWordQuery: String {
343350
/// No exact on single word query.
@@ -422,6 +429,22 @@ open class Query : AbstractQuery {
422429
set { self["hitsPerPage"] = Query.buildUInt(newValue) }
423430
}
424431

432+
/// Offset of the first hit to return (zero-based).
433+
///
434+
/// + Note: In most cases, page/hitsPerPage is the recommended method for pagination.
435+
public var offset: UInt? {
436+
get { return Query.parseUInt(self["offset"]) }
437+
set { self["offset"] = Query.buildUInt(newValue) }
438+
}
439+
440+
/// Maximum number of hits to return. (1000 is the maximum)
441+
///
442+
/// +Note: In most cases, page/hitsPerPage is the recommended method for pagination.
443+
public var length: UInt? {
444+
get { return Query.parseUInt(self["length"]) }
445+
set { self["length"] = Query.buildUInt(newValue) }
446+
}
447+
425448
// MARK: Parameters to control results content
426449

427450
/// List of object attributes you want to retrieve (let you minimize the answer size). You can also use `*` to
@@ -974,6 +997,18 @@ open class Query : AbstractQuery {
974997
get { return AbstractQuery.toNumber(self.hitsPerPage) }
975998
set { self.hitsPerPage = newValue?.uintValue }
976999
}
1000+
1001+
@objc(offset)
1002+
public var z_objc_offset: NSNumber? {
1003+
get { return AbstractQuery.toNumber(self.offset) }
1004+
set { self.offset = newValue?.uintValue }
1005+
}
1006+
1007+
@objc(length)
1008+
public var z_objc_length: NSNumber? {
1009+
get { return AbstractQuery.toNumber(self.length) }
1010+
set { self.length = newValue?.uintValue }
1011+
}
9771012

9781013
@objc(getRankingInfo)
9791014
public var z_objc_getRankingInfo: NSNumber? {

Tests/ObjectiveCBridging.m

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,10 +92,13 @@ - (void)testQuery {
9292
query.removeWordsIfNoResults = @"allOptional";
9393
query.disableTypoToleranceOnAttributes = @[ @"foo", @"bar" ];
9494
query.removeStopWords = @[ @"en", @"fr" ];
95+
query.disableExactOnAttributes = @[ @"foo", @"bar" ];
9596
query.exactOnSingleWordQuery = @"attribute";
9697
query.alternativesAsExact = @[ @"foo", @"bar" ];
9798
query.page = [NSNumber numberWithInt:6];
9899
query.hitsPerPage = [NSNumber numberWithInt:66];
100+
query.offset = [NSNumber numberWithInt:4];
101+
query.length = [NSNumber numberWithInt:4];
99102
query.attributesToRetrieve = @[ @"foo", @"bar" ];
100103
query.attributesToHighlight = @[ @"foo", @"bar" ];
101104
query.attributesToSnippet = @[ @"foo", @"bar" ];
@@ -511,6 +514,28 @@ - (void)test_hitsPerPage {
511514
XCTAssertEqualObjects(query2.hitsPerPage, value);
512515
}
513516

517+
- (void)test_offset {
518+
Query* query1 = [Query new];
519+
XCTAssertNil(query1.offset);
520+
521+
NSNumber* value = [NSNumber numberWithInt:4];
522+
query1.offset = value;
523+
XCTAssertEqualObjects(query1[@"offset"], @"4");
524+
Query* query2 = [Query parse:[query1 build]];
525+
XCTAssertEqualObjects(query2.offset, value);
526+
}
527+
528+
- (void)test_length {
529+
Query* query1 = [Query new];
530+
XCTAssertNil(query1.length);
531+
532+
NSNumber* value = [NSNumber numberWithInt:4];
533+
query1.length = value;
534+
XCTAssertEqualObjects(query1[@"length"], @"4");
535+
Query* query2 = [Query parse:[query1 build]];
536+
XCTAssertEqualObjects(query2.length, value);
537+
}
538+
514539
- (void)test_getRankingInfo {
515540
Query* query1 = [Query new];
516541
XCTAssertNil(query1.getRankingInfo);

Tests/QueryTests.swift

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,26 @@ class QueryTests: XCTestCase {
263263
XCTAssertEqual(query2.hitsPerPage, 50)
264264
}
265265

266+
func test_offset() {
267+
let query1 = Query()
268+
XCTAssertNil(query1.offset)
269+
query1.offset = 4
270+
XCTAssertEqual(query1.offset, 4)
271+
XCTAssertEqual(query1["offset"], "4")
272+
let query2 = Query.parse(query1.build())
273+
XCTAssertEqual(query2.offset, 4)
274+
}
275+
276+
func test_length() {
277+
let query1 = Query()
278+
XCTAssertNil(query1.length)
279+
query1.length = 4
280+
XCTAssertEqual(query1.length, 4)
281+
XCTAssertEqual(query1["length"], "4")
282+
let query2 = Query.parse(query1.build())
283+
XCTAssertEqual(query2.length, 4)
284+
}
285+
266286
func test_allowTyposOnNumericTokens() {
267287
let query1 = Query()
268288
XCTAssertNil(query1.allowTyposOnNumericTokens)
@@ -703,6 +723,16 @@ class QueryTests: XCTestCase {
703723
XCTAssertEqual(query2.filters, VALUE)
704724
}
705725

726+
func test_disableExactOnAttributes() {
727+
let query1 = Query()
728+
XCTAssertNil(query1.disableExactOnAttributes)
729+
query1.disableExactOnAttributes = ["foo", "bar"]
730+
XCTAssertEqual(query1.disableExactOnAttributes!, ["foo", "bar"])
731+
XCTAssertEqual(query1["disableExactOnAttributes"], "[\"foo\",\"bar\"]")
732+
let query2 = Query.parse(query1.build())
733+
XCTAssertEqual(query2.disableExactOnAttributes!, ["foo", "bar"])
734+
}
735+
706736
func test_exactOnSingleWordQuery() {
707737
let query1 = Query()
708738
XCTAssertNil(query1.exactOnSingleWordQuery)

0 commit comments

Comments
 (0)