Check for missing messages during resync

master
Vitaliy Filippov 2016-07-25 16:17:05 +03:00
parent 4b52453e47
commit 22c142247d
1 changed files with 8 additions and 3 deletions

View File

@ -255,10 +255,15 @@ Syncer.updateFlags = function*(messages, boxId)
uid: m[0].uid,
flags: toPgArray(m[0].flags)
}));
// TODO check if something is missing
yield pg.update('messages m', { flags: pg.sql('t.flags::varchar(255)[]'), vertag: self.versionTag })
var [ updated ] = yield pg.update('messages m', { flags: pg.sql('t.flags::varchar(255)[]'), vertag: self.versionTag })
.from('('+pg.sql.values(rows)+') AS t (uid, flags)')
.where({ 'm.folder_id': boxId }).where(pg.sql('m.uid=t.uid')).run(gen.ef());
.where({ 'm.folder_id': boxId }).where(pg.sql('m.uid=t.uid')).returning('m.uid').rows(gen.ef());
var uh = {}, i;
for (i = 0; i < updated.length; i++)
uh[updated[i].uid] = true;
for (i = 0; i < messages.length; i++)
if (!uh[messages[i][0].uid])
console.log('message is missing: '+messages[i][0].uid);
self.synced += messages.length;
process.stderr.write('\rsynchronizing '+self.synced);
}