mirror of
				https://github.com/zadam/trilium.git
				synced 2025-11-04 05:28:59 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			88 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			1.8 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 SearchResult from "../../src/services/search/search_result.js";
 | 
						|
import { 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,
 | 
						|
};
 |