mirror of
https://github.com/zadam/trilium.git
synced 2025-03-01 14:22:32 +01:00
Merge branch 'stable'
This commit is contained in:
commit
f3a2e2cbde
@ -2,7 +2,7 @@
|
|||||||
"name": "trilium",
|
"name": "trilium",
|
||||||
"productName": "Trilium Notes",
|
"productName": "Trilium Notes",
|
||||||
"description": "Trilium Notes",
|
"description": "Trilium Notes",
|
||||||
"version": "0.39.4",
|
"version": "0.39.5",
|
||||||
"license": "AGPL-3.0-only",
|
"license": "AGPL-3.0-only",
|
||||||
"main": "electron.js",
|
"main": "electron.js",
|
||||||
"bin": {
|
"bin": {
|
||||||
|
@ -42,6 +42,8 @@ async function setupProtectedSession(password) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$("#container").addClass('protected-session-active');
|
||||||
|
|
||||||
protectedSessionHolder.setProtectedSessionId(response.protectedSessionId);
|
protectedSessionHolder.setProtectedSessionId(response.protectedSessionId);
|
||||||
protectedSessionHolder.touchProtectedSession();
|
protectedSessionHolder.touchProtectedSession();
|
||||||
|
|
||||||
|
@ -1 +1 @@
|
|||||||
module.exports = { buildDate:"2020-01-04T22:01:20+01:00", buildRevision: "3b8b4da149fbc1b17d09253693823f5135a55f2e" };
|
module.exports = { buildDate:"2020-01-08T21:01:24+01:00", buildRevision: "2b69abf8ab2241f01cd38b31308e54b9faaa74d5" };
|
||||||
|
@ -18,18 +18,6 @@ class ConsistencyChecks {
|
|||||||
this.fixedIssues = false;
|
this.fixedIssues = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
async findIssues(query, errorCb) {
|
|
||||||
const results = await sql.getRows(query);
|
|
||||||
|
|
||||||
for (const res of results) {
|
|
||||||
logError(errorCb(res));
|
|
||||||
|
|
||||||
this.unrecoveredConsistencyErrors = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return results;
|
|
||||||
}
|
|
||||||
|
|
||||||
async findAndFixIssues(query, fixerCb) {
|
async findAndFixIssues(query, fixerCb) {
|
||||||
const results = await sql.getRows(query);
|
const results = await sql.getRows(query);
|
||||||
|
|
||||||
@ -175,13 +163,6 @@ class ConsistencyChecks {
|
|||||||
logError(`Relation ${attributeId} references missing note ${noteId}`)
|
logError(`Relation ${attributeId} references missing note ${noteId}`)
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
await this.findIssues(`
|
|
||||||
SELECT noteRevisionId, note_revisions.noteId
|
|
||||||
FROM note_revisions
|
|
||||||
LEFT JOIN notes USING (noteId)
|
|
||||||
WHERE notes.noteId IS NULL`,
|
|
||||||
({noteRevisionId, noteId}) => `Note revision ${noteRevisionId} references missing note ${noteId}`);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async findExistencyIssues() {
|
async findExistencyIssues() {
|
||||||
@ -335,13 +316,22 @@ class ConsistencyChecks {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
await this.findIssues(`
|
await this.findAndFixIssues(`
|
||||||
SELECT noteId
|
SELECT noteId
|
||||||
FROM notes
|
FROM notes
|
||||||
JOIN note_contents USING (noteId)
|
JOIN note_contents USING (noteId)
|
||||||
WHERE isErased = 1
|
WHERE isErased = 1
|
||||||
AND content IS NOT NULL`,
|
AND content IS NOT NULL`,
|
||||||
({noteId}) => `Note ${noteId} content is not null even though the note is erased`);
|
async ({noteId}) => {
|
||||||
|
if (this.autoFix) {
|
||||||
|
await sql.execute(`UPDATE note_contents SET content = NULL WHERE noteId = ?`, [noteId]);
|
||||||
|
|
||||||
|
logFix(`Note ${noteId} content has been set to null since the note is erased`);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
logError(`Note ${noteId} content is not null even though the note is erased`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
await this.findAndFixIssues(`
|
await this.findAndFixIssues(`
|
||||||
SELECT noteId, noteRevisionId
|
SELECT noteId, noteRevisionId
|
||||||
@ -398,20 +388,40 @@ class ConsistencyChecks {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
await this.findIssues(`
|
await this.findAndFixIssues(`
|
||||||
SELECT noteRevisionId
|
SELECT noteRevisionId
|
||||||
FROM note_revisions
|
FROM note_revisions
|
||||||
JOIN note_revision_contents USING (noteRevisionId)
|
JOIN note_revision_contents USING (noteRevisionId)
|
||||||
WHERE isErased = 1
|
WHERE isErased = 1
|
||||||
AND content IS NOT NULL`,
|
AND content IS NOT NULL`,
|
||||||
({noteRevisionId}) => `Note revision ${noteRevisionId} content is not null even though the note revision is erased`);
|
async ({noteRevisionId}) => {
|
||||||
|
if (this.autoFix) {
|
||||||
|
await sql.execute(`UPDATE note_revision_contents SET content = NULL WHERE noteRevisionId = ?`, [noteRevisionId]);
|
||||||
|
|
||||||
await this.findIssues(`
|
logFix(`Note revision ${noteRevisionId} content was set to null since the note revision is erased`);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
logError(`Note revision ${noteRevisionId} content is not null even though the note revision is erased`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
await this.findAndFixIssues(`
|
||||||
SELECT noteId
|
SELECT noteId
|
||||||
FROM notes
|
FROM notes
|
||||||
WHERE isErased = 1
|
WHERE isErased = 1
|
||||||
AND isDeleted = 0`,
|
AND isDeleted = 0`,
|
||||||
({noteId}) => `Note ${noteId} is not deleted even though it is erased`);
|
async ({noteId}) => {
|
||||||
|
if (this.autoFix) {
|
||||||
|
const note = await repository.getNote(noteId);
|
||||||
|
note.isDeleted = true;
|
||||||
|
await note.save();
|
||||||
|
|
||||||
|
logFix(`Note ${noteId} was set to deleted since it is erased`);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
logError(`Note ${noteId} is not deleted even though it is erased`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
await this.findAndFixIssues(`
|
await this.findAndFixIssues(`
|
||||||
SELECT parentNoteId
|
SELECT parentNoteId
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
const dayjs = require("dayjs");
|
const dayjs = require("dayjs");
|
||||||
|
|
||||||
const filterRegex = /(\b(AND|OR)\s+)?@(!?)([\p{L}\p{Number}_]+|"[^"]+")\s*((=|!=|<|<=|>|>=|!?\*=|!?=\*|!?\*=\*)\s*(\S+|"[^"]+"))?/igu;
|
const filterRegex = /(\b(AND|OR)\s+)?@(!?)([\p{L}\p{Number}_]+|"[^"]+")\s*((=|!=|<|<=|>|>=|!?\*=|!?=\*|!?\*=\*)\s*([^\s=*]+|"[^"]+"))?/igu;
|
||||||
const smartValueRegex = /^(NOW|TODAY|WEEK|MONTH|YEAR) *([+\-] *\d+)?$/i;
|
const smartValueRegex = /^(NOW|TODAY|WEEK|MONTH|YEAR) *([+\-] *\d+)?$/i;
|
||||||
|
|
||||||
function calculateSmartValue(v) {
|
function calculateSmartValue(v) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user