@@ -7,10 +7,10 @@ console.log('Migrating push plugin data');
7
7
8
8
plugins . dbConnection ( ) . then ( async db => {
9
9
common . db = db ;
10
- let push = await db . collection ( 'push' ) . findOne ( ) ;
11
- if ( push && ! process . env . FORCE_REPEAT ) {
12
- return console . log ( 'Migrating push plugin data: no migration needed as there\'s already data in "push" collection' ) ;
13
- }
10
+ // let push = await db.collection('push').findOne();
11
+ // if (push && !process.env.FORCE_REPEAT) {
12
+ // return console.log('Migrating push plugin data: no migration needed as there\'s already data in "push" collection');
13
+ // }
14
14
15
15
await db . createCollection ( 'push' ) . catch ( ( ) => {
16
16
console . log ( 'push collection already exists' ) ;
@@ -170,25 +170,61 @@ plugins.dbConnection().then(async db => {
170
170
let obj = { } ;
171
171
if ( Array . isArray ( doc . msgs ) ) {
172
172
doc . msgs . forEach ( msg => {
173
+ let id , date ;
173
174
if ( Array . isArray ( msg ) ) {
174
- obj [ msg [ 0 ] ] = msg [ 1 ] ;
175
+ id = msg [ 0 ] ;
176
+ date = msg [ 1 ] ;
175
177
}
176
178
else if ( common . dbext . isoid ( msg ) ) {
177
- obj [ msg ] = new Date ( 2018 , 0 , 1 , 1 ) . getTime ( ) ;
179
+ id = msg ;
180
+ date = new Date ( 2018 , 0 , 1 , 1 ) . getTime ( ) ;
181
+ }
182
+ if ( obj [ id ] ) {
183
+ if ( obj [ id ] . indexOf ( date ) === - 1 ) {
184
+ obj [ id ] . push ( date ) ;
185
+ }
186
+ }
187
+ else {
188
+ obj [ id ] = [ date ] ;
178
189
}
179
190
} ) ;
180
191
}
181
192
else if ( doc . msgs && doc . msgs [ '0' ] ) {
182
193
for ( let k in doc . msgs ) {
183
- let msg = doc . msgs [ k ] ;
194
+ let id ,
195
+ date ,
196
+ msg = doc . msgs [ k ] ;
184
197
if ( Array . isArray ( msg ) ) {
185
- obj [ msg [ 0 ] ] = msg [ 1 ] ;
198
+ id = msg [ 0 ] ;
199
+ date = msg [ 1 ] ;
186
200
}
187
201
else if ( common . dbext . isoid ( msg ) ) {
188
- obj [ msg ] = new Date ( 2018 , 0 , 1 , 1 ) . getTime ( ) ;
202
+ id = msg ;
203
+ date = new Date ( 2018 , 0 , 1 , 1 ) . getTime ( ) ;
204
+ }
205
+ if ( obj [ id ] ) {
206
+ if ( obj [ id ] . indexOf ( date ) === - 1 ) {
207
+ obj [ id ] . push ( date ) ;
208
+ }
209
+ }
210
+ else {
211
+ obj [ id ] = [ date ] ;
189
212
}
190
213
}
191
214
}
215
+ else {
216
+ let needsFix = false ,
217
+ fixed = { } ;
218
+ for ( let mid in doc . msgs ) {
219
+ if ( typeof doc . msgs [ mid ] === 'number' ) {
220
+ needsFix = true ;
221
+ }
222
+ fixed [ mid ] = typeof doc . msgs [ mid ] === 'number' ? [ doc . msgs [ mid ] ] : doc . msgs [ mid ] ;
223
+ }
224
+ if ( needsFix ) {
225
+ obj = fixed ;
226
+ }
227
+ }
192
228
193
229
if ( Object . keys ( obj ) . length ) {
194
230
await add ( { updateOne : { filter : { _id : doc . _id } , update : { $set : { msgs : obj } } } } ) ;
@@ -241,6 +277,9 @@ plugins.dbConnection().then(async db => {
241
277
type = queue . substr ( queue . lastIndexOf ( '_' ) + 1 ) ,
242
278
p = type [ 0 ] ,
243
279
f = type [ 1 ] ;
280
+ if ( ( p === 'a' || p === 'h' ) && f === 't' ) {
281
+ f = 'p' ;
282
+ }
244
283
for await ( const doc of stream ) {
245
284
await add ( {
246
285
_id : common . dbext . oidWithDate ( Math . floor ( doc . d / 1000 ) ) ,
0 commit comments