mirror of
https://github.com/TriliumNext/Notes.git
synced 2025-07-29 11:02:28 +08:00
60 lines
1.5 KiB
JavaScript
60 lines
1.5 KiB
JavaScript
![]() |
"use strict";
|
||
|
|
||
|
require('colors');
|
||
|
const jsdiff = require('diff');
|
||
|
const sqlite = require('sqlite');
|
||
|
const sql = require('./sql');
|
||
|
|
||
|
function printDiff(one, two) {
|
||
|
const diff = jsdiff.diffChars(one, two);
|
||
|
|
||
|
diff.forEach(function(part){
|
||
|
// green for additions, red for deletions
|
||
|
// grey for common parts
|
||
|
const color = part.added ? 'green' :
|
||
|
part.removed ? 'red' : 'grey';
|
||
|
process.stderr.write(part.value[color]);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function compareRows(rs1, rs2) {
|
||
|
const len = Math.max(rs1.length, rs2.length);
|
||
|
|
||
|
for (let i = 0; i < len; i++) {
|
||
|
const r1 = JSON.stringify(rs1[i], null, 2);
|
||
|
const r2 = JSON.stringify(rs2[i], null, 2);
|
||
|
|
||
|
if (r1 !== r2) {
|
||
|
console.log("Row #" + i + " differs:");
|
||
|
console.log("First: ", r1);
|
||
|
console.log("Second: ", r2);
|
||
|
printDiff(r1, r2);
|
||
|
process.exit(1);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
async function main() {
|
||
|
const db1Path = process.argv[2];
|
||
|
const db2Path = process.argv[3];
|
||
|
|
||
|
const db1 = await sqlite.open(db1Path, { Promise });
|
||
|
const db2 = await sqlite.open(db2Path, { Promise });
|
||
|
|
||
|
async function compare(query) {
|
||
|
const rs1 = await sql.getResults(db1, query);
|
||
|
const rs2 = await sql.getResults(db2, query);
|
||
|
|
||
|
compareRows(rs1, rs2);
|
||
|
}
|
||
|
|
||
|
await compare("SELECT note_id, note_title, note_text, date_modified, is_protected, is_deleted FROM notes ORDER BY note_id");
|
||
|
}
|
||
|
|
||
|
(async () => {
|
||
|
try {
|
||
|
await main();
|
||
|
} catch (e) {
|
||
|
console.error(e);
|
||
|
}
|
||
|
})();
|