diff --git a/operetta.js b/operetta.js index dd89d0c..1faf595 100644 --- a/operetta.js +++ b/operetta.js @@ -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); }