note API additions

This commit is contained in:
azivner 2018-08-21 12:50:43 +02:00
parent 1938c317c3
commit 4f1e6ec70f
2 changed files with 41 additions and 0 deletions

View File

@ -231,6 +231,46 @@ class Note extends Entity {
async removeLabel(name, value = "") { return await this.removeAttribute(LABEL, name, value); } async removeLabel(name, value = "") { return await this.removeAttribute(LABEL, name, value); }
async removeRelation(name, value = "") { return await this.removeAttribute(RELATION, name, value); } async removeRelation(name, value = "") { return await this.removeAttribute(RELATION, name, value); }
async getRelationTarget(name) {
const relation = await this.getRelation(name);
return relation ? await repository.getNote(relation.value) : null;
}
async findNotesWithAttribute(type, name, value) {
const params = [this.noteId, name];
let valueCondition = "";
if (value !== undefined) {
params.push(value);
valueCondition = " AND attributes.value = ?";
}
const notes = await repository.getEntities(`
WITH RECURSIVE
tree(noteId) AS (
SELECT ?
UNION
SELECT branches.noteId FROM branches
JOIN tree ON branches.parentNoteId = tree.noteId
JOIN notes ON notes.noteId = branches.noteId
WHERE notes.isDeleted = 0
AND branches.isDeleted = 0
)
SELECT notes.* FROM notes
JOIN tree ON tree.noteId = notes.noteId
JOIN attributes ON attributes.noteId = notes.noteId
WHERE attributes.isDeleted = 0
AND attributes.name = ?
${valueCondition}
ORDER BY noteId, position`, params);
return notes;
}
async findNotesWithLabel(name, value) { return await this.findNotesWithAttribute(LABEL, name, value); }
async findNotesWithRelation(name, value) { return await this.findNotesWithAttribute(RELATION, name, value); }
async getRevisions() { async getRevisions() {
return await repository.getEntities("SELECT * FROM note_revisions WHERE noteId = ?", [this.noteId]); return await repository.getEntities("SELECT * FROM note_revisions WHERE noteId = ?", [this.noteId]);
} }

View File

@ -299,6 +299,7 @@ async function loadAttributes() {
$input.datepicker({ $input.datepicker({
changeMonth: true, changeMonth: true,
changeYear: true, changeYear: true,
yearRange: "c-200:c+10",
dateFormat: "yy-mm-dd" dateFormat: "yy-mm-dd"
}); });