@@ -412,12 +412,12 @@ impl<'a> FilterParams<'a> {
412
412
. single_value ( )
413
413
} ;
414
414
let conditions: Vec < BoxedCondition < ' _ > > = match * seek_payload {
415
- SeekPayload :: Name ( Name ( id ) ) => {
415
+ SeekPayload :: Name ( Name { id } ) => {
416
416
// Equivalent of:
417
417
// `WHERE name > name'`
418
418
vec ! [ Box :: new( crates:: name. nullable( ) . gt( crate_name_by_id( id) ) ) ]
419
419
}
420
- SeekPayload :: New ( New ( created_at, id) ) => {
420
+ SeekPayload :: New ( New { created_at, id } ) => {
421
421
// Equivalent of:
422
422
// `WHERE (created_at = created_at' AND id < id') OR created_at < created_at'`
423
423
vec ! [
@@ -430,7 +430,7 @@ impl<'a> FilterParams<'a> {
430
430
Box :: new( crates:: created_at. lt( created_at) . nullable( ) ) ,
431
431
]
432
432
}
433
- SeekPayload :: RecentUpdates ( RecentUpdates ( updated_at, id) ) => {
433
+ SeekPayload :: RecentUpdates ( RecentUpdates { updated_at, id } ) => {
434
434
// Equivalent of:
435
435
// `WHERE (updated_at = updated_at' AND id < id') OR updated_at < updated_at'`
436
436
vec ! [
@@ -443,7 +443,10 @@ impl<'a> FilterParams<'a> {
443
443
Box :: new( crates:: updated_at. lt( updated_at) . nullable( ) ) ,
444
444
]
445
445
}
446
- SeekPayload :: RecentDownloads ( RecentDownloads ( recent_downloads, id) ) => {
446
+ SeekPayload :: RecentDownloads ( RecentDownloads {
447
+ recent_downloads,
448
+ id,
449
+ } ) => {
447
450
// Equivalent of:
448
451
// for recent_downloads is not None:
449
452
// `WHERE (recent_downloads = recent_downloads' AND id < id')
@@ -477,7 +480,7 @@ impl<'a> FilterParams<'a> {
477
480
}
478
481
}
479
482
}
480
- SeekPayload :: Downloads ( Downloads ( downloads, id) ) => {
483
+ SeekPayload :: Downloads ( Downloads { downloads, id } ) => {
481
484
// Equivalent of:
482
485
// `WHERE (downloads = downloads' AND id < id') OR downloads < downloads'`
483
486
vec ! [
@@ -490,7 +493,7 @@ impl<'a> FilterParams<'a> {
490
493
Box :: new( crate_downloads:: downloads. lt( downloads) . nullable( ) ) ,
491
494
]
492
495
}
493
- SeekPayload :: Query ( Query ( exact_match, id) ) => {
496
+ SeekPayload :: Query ( Query { exact_match, id } ) => {
494
497
// Equivalent of:
495
498
// `WHERE (exact_match = exact_match' AND name < name') OR exact_match <
496
499
// exact_match'`
@@ -506,7 +509,11 @@ impl<'a> FilterParams<'a> {
506
509
Box :: new( name_exact_match. lt( exact_match) . nullable( ) ) ,
507
510
]
508
511
}
509
- SeekPayload :: Relevance ( Relevance ( exact, rank_in, id) ) => {
512
+ SeekPayload :: Relevance ( Relevance {
513
+ exact_match : exact,
514
+ rank : rank_in,
515
+ id,
516
+ } ) => {
510
517
// Equivalent of:
511
518
// `WHERE (exact_match = exact_match' AND rank = rank' AND name > name')
512
519
// OR (exact_match = exact_match' AND rank < rank')
@@ -553,13 +560,13 @@ mod seek {
553
560
554
561
seek ! {
555
562
pub enum Seek {
556
- Name ( i32 )
557
- New ( #[ serde( with="ts_microseconds" ) ] chrono:: NaiveDateTime , i32 )
558
- RecentUpdates ( #[ serde( with="ts_microseconds" ) ] chrono:: NaiveDateTime , i32 )
559
- RecentDownloads ( Option <i64 >, i32 )
560
- Downloads ( i64 , i32 )
561
- Query ( bool , i32 )
562
- Relevance ( bool , f32 , i32 )
563
+ Name { id : i32 }
564
+ New { #[ serde( with="ts_microseconds" ) ] created_at : chrono:: NaiveDateTime , id : i32 }
565
+ RecentUpdates { #[ serde( with="ts_microseconds" ) ] updated_at : chrono:: NaiveDateTime , id : i32 }
566
+ RecentDownloads { recent_downloads : Option <i64 >, id : i32 }
567
+ Downloads { downloads : i64 , id : i32 }
568
+ Query { exact_match : bool , id : i32 }
569
+ Relevance { exact_match : bool , rank : f32 , id : i32 }
563
570
}
564
571
}
565
572
@@ -568,20 +575,34 @@ mod seek {
568
575
& self ,
569
576
record : & ( Crate , bool , i64 , Option < i64 > , f32 ) ,
570
577
) -> SeekPayload {
578
+ let (
579
+ Crate {
580
+ id,
581
+ updated_at,
582
+ created_at,
583
+ ..
584
+ } ,
585
+ exact_match,
586
+ downloads,
587
+ recent_downloads,
588
+ rank,
589
+ ) = * record;
590
+
571
591
match * self {
572
- Seek :: Name => SeekPayload :: Name ( Name ( record. 0 . id ) ) ,
573
- Seek :: New => SeekPayload :: New ( New ( record. 0 . created_at , record. 0 . id ) ) ,
574
- Seek :: RecentUpdates => {
575
- SeekPayload :: RecentUpdates ( RecentUpdates ( record. 0 . updated_at , record. 0 . id ) )
576
- }
577
- Seek :: RecentDownloads => {
578
- SeekPayload :: RecentDownloads ( RecentDownloads ( record. 3 , record. 0 . id ) )
579
- }
580
- Seek :: Downloads => SeekPayload :: Downloads ( Downloads ( record. 2 , record. 0 . id ) ) ,
581
- Seek :: Query => SeekPayload :: Query ( Query ( record. 1 , record. 0 . id ) ) ,
582
- Seek :: Relevance => {
583
- SeekPayload :: Relevance ( Relevance ( record. 1 , record. 4 , record. 0 . id ) )
584
- }
592
+ Seek :: Name => SeekPayload :: Name ( Name { id } ) ,
593
+ Seek :: New => SeekPayload :: New ( New { created_at, id } ) ,
594
+ Seek :: RecentUpdates => SeekPayload :: RecentUpdates ( RecentUpdates { updated_at, id } ) ,
595
+ Seek :: RecentDownloads => SeekPayload :: RecentDownloads ( RecentDownloads {
596
+ recent_downloads,
597
+ id,
598
+ } ) ,
599
+ Seek :: Downloads => SeekPayload :: Downloads ( Downloads { downloads, id } ) ,
600
+ Seek :: Query => SeekPayload :: Query ( Query { exact_match, id } ) ,
601
+ Seek :: Relevance => SeekPayload :: Relevance ( Relevance {
602
+ exact_match,
603
+ rank,
604
+ id,
605
+ } ) ,
585
606
}
586
607
}
587
608
}
0 commit comments