mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 11:39:01 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			77 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			77 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 { NoteRow, NoteType } from "../../src/becca/entities/rows.js";
 | |
| randtoken.generator({ source: "crypto" });
 | |
| 
 | |
| export function findNoteByTitle(searchResults: Array<SearchResult>, title: string): BNote | undefined {
 | |
|     return searchResults.map((sr) => becca.notes[sr.noteId]).find((note) => note.title === title);
 | |
| }
 | |
| 
 | |
| export 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;
 | |
|     }
 | |
| }
 | |
| 
 | |
| export function id() {
 | |
|     return randtoken.generate(10);
 | |
| }
 | |
| 
 | |
| export function note(title: string, extraParams: Partial<NoteRow> = {}) {
 | |
|     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);
 | |
| }
 | 
