@@ -149,13 +149,14 @@ class QueryHandler {
149
149
'FROM `news` WHERE ' +
150
150
'CASE WHEN :category > -1 THEN `category` = :category ELSE ' +
151
151
'true END AND ' +
152
- 'CASE WHEN LENGTH(:terms) > 0 THEN `title` LIKE :terms OR ' +
152
+ 'CASE WHEN LENGTH(:terms) > 2 THEN `title` LIKE :terms OR ' +
153
153
'`body` LIKE :terms ELSE true END AND ' +
154
154
'CASE WHEN :before > -1 AND :after > -1 THEN ' +
155
155
'`date` < :before AND `date` >= :after ELSE true END ' +
156
156
'ORDER BY `date` DESC ' +
157
157
`LIMIT ${ NEWS_PER_PAGE } OFFSET (:page * ${ NEWS_PER_PAGE } )` ,
158
- getNews : 'SELECT * FROM `news` WHERE `id` = ?'
158
+ getNews : 'SELECT * FROM `news` WHERE `id` = ?' ,
159
+ getFile : 'SELECT `file` FROM `uploads` WHERE `name` = ?'
159
160
} ;
160
161
161
162
for ( const [ name , statement ] of Object . entries ( this . statements ) ) {
@@ -459,7 +460,34 @@ class QueryHandler {
459
460
delete query . id ;
460
461
query . terms = `%${ query . terms . replace ( / % | _ / g, '' ) } %` ;
461
462
462
- return this . statements . searchNews . all ( query ) ;
463
+ if ( ! query . page ) {
464
+ query . page = - 1 ;
465
+ }
466
+
467
+ if ( typeof query . category === 'undefined' ) {
468
+ query . category = - 1 ;
469
+ }
470
+
471
+ return this . statements . searchNews . all ( query ) . map ( ( article ) => {
472
+ const summary = article . summary . trim ( ) ;
473
+ const newLineAt = summary . indexOf ( '\n' ) ;
474
+
475
+ article . summary =
476
+ newLineAt > - 1
477
+ ? summary . slice ( 0 , newLineAt ) . replace ( / \. | ! | \? $ / , '' )
478
+ : summary ;
479
+
480
+ article . summary = article . summary . replace (
481
+ / [ ^ a - z 0 - 9 \- = / $ @ ! . , ' " ? : ] / gi,
482
+ ''
483
+ ) . trim ( ) ;
484
+
485
+ return article ;
486
+ } ) ;
487
+ }
488
+
489
+ getFile ( name ) {
490
+ return this . statements . getFile . pluck ( ) . get ( name ) ;
463
491
}
464
492
465
493
sync ( ) {
0 commit comments