mirror of
https://github.com/TriliumNext/Notes.git
synced 2025-07-27 18:12:29 +08:00
83 lines
2.0 KiB
TypeScript
83 lines
2.0 KiB
TypeScript
import BNote from "../../src/becca/entities/bnote.js";
|
|
import BBranch from "../../src/becca/entities/bbranch.js";
|
|
import BAttribute from "../../src/becca/entities/battribute.js";
|
|
import becca from "../../src/becca/becca.js";
|
|
import randtoken from "rand-token";
|
|
import type SearchResult from "../../src/services/search/search_result.js";
|
|
import type { NoteType } from "../../src/becca/entities/rows.js";
|
|
randtoken.generator({ source: "crypto" });
|
|
|
|
function findNoteByTitle(searchResults: Array<SearchResult>, title: string): BNote | undefined {
|
|
return searchResults.map((sr) => becca.notes[sr.noteId]).find((note) => note.title === title);
|
|
}
|
|
|
|
class NoteBuilder {
|
|
note: BNote;
|
|
constructor(note: BNote) {
|
|
this.note = note;
|
|
}
|
|
|
|
label(name: string, value = "", isInheritable = false) {
|
|
new BAttribute({
|
|
attributeId: id(),
|
|
noteId: this.note.noteId,
|
|
type: "label",
|
|
isInheritable,
|
|
name,
|
|
value
|
|
});
|
|
|
|
return this;
|
|
}
|
|
|
|
relation(name: string, targetNote: BNote) {
|
|
new BAttribute({
|
|
attributeId: id(),
|
|
noteId: this.note.noteId,
|
|
type: "relation",
|
|
name,
|
|
value: targetNote.noteId
|
|
});
|
|
|
|
return this;
|
|
}
|
|
|
|
child(childNoteBuilder: NoteBuilder, prefix = "") {
|
|
new BBranch({
|
|
branchId: id(),
|
|
noteId: childNoteBuilder.note.noteId,
|
|
parentNoteId: this.note.noteId,
|
|
prefix,
|
|
notePosition: 10
|
|
});
|
|
|
|
return this;
|
|
}
|
|
}
|
|
|
|
function id() {
|
|
return randtoken.generate(10);
|
|
}
|
|
|
|
function note(title: string, extraParams = {}) {
|
|
const row = Object.assign(
|
|
{
|
|
noteId: id(),
|
|
title: title,
|
|
type: "text" as NoteType,
|
|
mime: "text/html"
|
|
},
|
|
extraParams
|
|
);
|
|
|
|
const note = new BNote(row);
|
|
|
|
return new NoteBuilder(note);
|
|
}
|
|
|
|
export default {
|
|
NoteBuilder,
|
|
findNoteByTitle,
|
|
note
|
|
};
|