@@ -138,6 +138,47 @@ public static function provideQueryBuilderToMql(): iterable
138
138
fn (Builder $ builder ) => $ builder ->limit (10 )->offset (5 )->select ('foo ' , 'bar ' ),
139
139
];
140
140
141
+ yield 'skip limit ' => [
142
+ ['find ' => [[], ['skip ' => 5 , 'limit ' => 10 ]]],
143
+ fn (Builder $ builder ) => $ builder ->offset (5 )->limit (10 ),
144
+ ];
145
+
146
+ /** @see DatabaseQueryBuilderTest::testLimitsAndOffsets() */
147
+ yield 'reset limit ' => [
148
+ ['find ' => [[], []]],
149
+ fn (Builder $ builder ) => $ builder ->limit (10 )->limit (null ),
150
+ ];
151
+
152
+ yield 'limit 0 ' => [
153
+ ['find ' => [[], []]],
154
+ fn (Builder $ builder ) => $ builder ->limit (0 ),
155
+ ];
156
+
157
+ yield 'skip take ' => [
158
+ ['find ' => [[], ['skip ' => 5 , 'limit ' => 10 ]]],
159
+ fn (Builder $ builder ) => $ builder ->skip (5 )->take (10 ),
160
+ ];
161
+
162
+ yield 'kip 0 take 0 ' => [
163
+ ['find ' => [[], []]],
164
+ fn (Builder $ builder ) => $ builder ->skip (0 )->take (0 ),
165
+ ];
166
+
167
+ yield 'skip take negative ' => [
168
+ ['find ' => [[], []]],
169
+ fn (Builder $ builder ) => $ builder ->skip (-5 )->take (-10 ),
170
+ ];
171
+
172
+ yield 'skip take null ' => [
173
+ ['find ' => [[], []]],
174
+ fn (Builder $ builder ) => $ builder ->skip (null )->take (null ),
175
+ ];
176
+
177
+ yield 'skip 5 take null ' => [
178
+ ['find ' => [[], ['skip ' => 5 ]]],
179
+ fn (Builder $ builder ) => $ builder ->skip (5 )->take (null ),
180
+ ];
181
+
141
182
/** @see DatabaseQueryBuilderTest::testOrderBys() */
142
183
yield 'orderBy multiple columns ' => [
143
184
['find ' => [[], ['sort ' => ['email ' => 1 , 'age ' => -1 ]]]],
@@ -343,6 +384,38 @@ function (Builder $builder) {
343
384
->select ('foo ' , 'bar ' ),
344
385
];
345
386
387
+ /** @see DatabaseQueryBuilderTest::testLatest() */
388
+ yield 'latest ' => [
389
+ ['find ' => [[], ['sort ' => ['created_at ' => -1 ]]]],
390
+ fn (Builder $ builder ) => $ builder ->latest (),
391
+ ];
392
+
393
+ yield 'latest limit ' => [
394
+ ['find ' => [[], ['sort ' => ['created_at ' => -1 ], 'limit ' => 1 ]]],
395
+ fn (Builder $ builder ) => $ builder ->latest ()->limit (1 ),
396
+ ];
397
+
398
+ yield 'latest custom field ' => [
399
+ ['find ' => [[], ['sort ' => ['updated_at ' => -1 ]]]],
400
+ fn (Builder $ builder ) => $ builder ->latest ('updated_at ' ),
401
+ ];
402
+
403
+ /** @see DatabaseQueryBuilderTest::testOldest() */
404
+ yield 'oldest ' => [
405
+ ['find ' => [[], ['sort ' => ['created_at ' => 1 ]]]],
406
+ fn (Builder $ builder ) => $ builder ->oldest (),
407
+ ];
408
+
409
+ yield 'oldest limit ' => [
410
+ ['find ' => [[], ['sort ' => ['created_at ' => 1 ], 'limit ' => 1 ]]],
411
+ fn (Builder $ builder ) => $ builder ->oldest ()->limit (1 ),
412
+ ];
413
+
414
+ yield 'oldest custom field ' => [
415
+ ['find ' => [[], ['sort ' => ['updated_at ' => 1 ]]]],
416
+ fn (Builder $ builder ) => $ builder ->oldest ('updated_at ' ),
417
+ ];
418
+
346
419
yield 'groupBy ' => [
347
420
['aggregate ' => [
348
421
[['$group ' => ['_id ' => ['foo ' => '$foo ' ], 'foo ' => ['$last ' => '$foo ' ]]]],
0 commit comments