@@ -369,7 +369,7 @@ enum Search {
369
369
static func fetch( _ database: Database ,
370
370
_ terms: [ String ] ,
371
371
page: Int ,
372
- pageSize: Int ) -> EventLoopFuture < Search . Response > {
372
+ pageSize: Int ) async throws -> Search . Response {
373
373
let page = page. clamped ( to: 1 ... )
374
374
let ( sanitizedTerms, filters) = SearchFilter . split ( terms: sanitize ( terms) )
375
375
@@ -382,24 +382,23 @@ enum Search {
382
382
filters: filters,
383
383
page: page,
384
384
pageSize: pageSize) else {
385
- return database . eventLoop . future ( . init( hasMoreResults: false ,
386
- searchTerm: sanitizedTerms. joined ( separator: " " ) ,
387
- searchFilters: [ ] ,
388
- results: [ ] ) )
385
+ return . init( hasMoreResults: false ,
386
+ searchTerm: sanitizedTerms. joined ( separator: " " ) ,
387
+ searchFilters: [ ] ,
388
+ results: [ ] )
389
389
}
390
- return query. all ( decoding: DBRecord . self)
391
- . mapEachCompact ( Result . init)
392
- . map { results in
393
- let hasMoreResults = results. filter ( \. isPackage) . count > pageSize
394
- // first page has non-package results prepended, extend prefix for them
395
- let keep = ( page == 1 )
396
- ? pageSize + results. filter { !$0. isPackage } . count
397
- : pageSize
398
- return Search . Response ( hasMoreResults: hasMoreResults,
399
- searchTerm: sanitizedTerms. joined ( separator: " " ) ,
400
- searchFilters: filters. map { $0. viewModel } ,
401
- results: Array ( results. prefix ( keep) ) )
402
- }
390
+ let results = try await query. all ( decoding: DBRecord . self) . compactMap ( Result . init)
391
+
392
+ let hasMoreResults = results. filter ( \. isPackage) . count > pageSize
393
+ // first page has non-package results prepended, extend prefix for them
394
+ let keep = ( page == 1 )
395
+ ? pageSize + results. filter { !$0. isPackage } . count
396
+ : pageSize
397
+
398
+ return Search . Response ( hasMoreResults: hasMoreResults,
399
+ searchTerm: sanitizedTerms. joined ( separator: " " ) ,
400
+ searchFilters: filters. map { $0. viewModel } ,
401
+ results: Array ( results. prefix ( keep) ) )
403
402
}
404
403
405
404
static func refresh( on database: Database ) async throws {
0 commit comments