@@ -151,30 +151,38 @@ export class SearchTicketService {
151
151
private async processSyncByRangeJob (
152
152
data : Extract < SyncTicketSearchDocumentJobData , { type : 'syncByRange' } >
153
153
) {
154
- const { start, end, limit = 100 , delay = 1000 } = data ;
154
+ const { start, end, exclude, limit = 100 , delay = 1000 } = data ;
155
+
155
156
const query = Ticket . queryBuilder ( ) ;
156
157
if ( start ) {
157
- query . where ( 'createdAt' , '>' , new Date ( start ) ) ;
158
+ query . where ( 'createdAt' , '>= ' , new Date ( start ) ) ;
158
159
}
159
160
if ( end ) {
160
- query . where ( 'createdAt' , '<' , new Date ( end ) ) ;
161
+ query . where ( 'createdAt' , '<=' , new Date ( end ) ) ;
162
+ }
163
+ if ( exclude ?. length ) {
164
+ query . where ( 'objectId' , 'not-in' , exclude ) ;
161
165
}
166
+
162
167
const tickets = await query . orderBy ( 'createdAt' ) . limit ( limit ) . find ( { useMasterKey : true } ) ;
163
168
if ( tickets . length === 0 ) {
164
169
console . log ( '[SearchTicketService] Sync job is done' ) ;
165
170
return ;
166
171
}
167
172
await this . syncTickets ( tickets ) ;
168
- const lastCreatedAt = tickets [ tickets . length - 1 ] . createdAt . toISOString ( ) ;
169
- console . log (
170
- `[SearchTicketService] Sync ${
171
- tickets . length
172
- } tickets, (${ tickets [ 0 ] . createdAt . toISOString ( ) } ,${ lastCreatedAt } )`
173
- ) ;
173
+
174
+ const lastCreatedAt = tickets [ tickets . length - 1 ] . createdAt ;
175
+
176
+ // prettier-ignore
177
+ console . log ( `[SearchTicketService] Sync ${ tickets . length } tickets, (${ tickets [ 0 ] . createdAt . toISOString ( ) } ,${ lastCreatedAt . toISOString ( ) } )`) ;
178
+
174
179
await this . syncQueue ?. add (
175
180
{
176
181
...data ,
177
- start : lastCreatedAt ,
182
+ start : lastCreatedAt . toISOString ( ) ,
183
+ exclude : tickets
184
+ . filter ( ( ticket ) => ticket . createdAt . getTime ( ) === lastCreatedAt . getTime ( ) )
185
+ . map ( ( ticket ) => ticket . id ) ,
178
186
} ,
179
187
{
180
188
delay,
@@ -300,7 +308,7 @@ export class SearchTicketService {
300
308
. toJSON ( ) ;
301
309
302
310
const res = await this . esClient . search ( {
303
- index : [ this . indexName , this . indexName + '-tmp' ] ,
311
+ index : this . indexName ,
304
312
body,
305
313
} ) ;
306
314
0 commit comments