mirror of
https://github.com/zadam/trilium.git
synced 2026-01-06 14:44:25 +01:00
76 lines
2.6 KiB
TypeScript
76 lines
2.6 KiB
TypeScript
"use strict";
|
|
|
|
import hoistedNoteService from "../hoisted_note.js";
|
|
import type { SearchParams } from "./services/types.js";
|
|
|
|
class SearchContext {
|
|
fastSearch: boolean;
|
|
includeArchivedNotes: boolean;
|
|
includeHiddenNotes: boolean;
|
|
ignoreHoistedNote: boolean;
|
|
/** Whether to ignore certain attributes from the search such as ~internalLink. */
|
|
ignoreInternalAttributes: boolean;
|
|
ancestorNoteId?: string;
|
|
ancestorDepth?: string;
|
|
orderBy?: string;
|
|
orderDirection?: string;
|
|
limit?: number | null;
|
|
debug?: boolean;
|
|
debugInfo: {} | null;
|
|
fuzzyAttributeSearch: boolean;
|
|
enableFuzzyMatching: boolean; // Controls whether fuzzy matching is enabled for this search phase
|
|
highlightedTokens: string[];
|
|
originalQuery: string;
|
|
fulltextQuery: string;
|
|
dbLoadNeeded: boolean;
|
|
error: string | null;
|
|
|
|
constructor(params: SearchParams = {}) {
|
|
this.fastSearch = !!params.fastSearch;
|
|
this.includeArchivedNotes = !!params.includeArchivedNotes;
|
|
this.includeHiddenNotes = !!params.includeHiddenNotes;
|
|
this.ignoreHoistedNote = !!params.ignoreHoistedNote;
|
|
this.ignoreInternalAttributes = !!params.ignoreInternalAttributes;
|
|
this.ancestorNoteId = params.ancestorNoteId;
|
|
|
|
if (!this.ancestorNoteId && !this.ignoreHoistedNote) {
|
|
// hoisting in hidden subtree should not limit autocomplete
|
|
// since we want to link (create relations) to the normal non-hidden notes
|
|
this.ancestorNoteId = hoistedNoteService.getHoistedNoteId();
|
|
}
|
|
|
|
this.ancestorDepth = params.ancestorDepth;
|
|
this.orderBy = params.orderBy;
|
|
this.orderDirection = params.orderDirection;
|
|
this.limit = params.limit;
|
|
this.debug = params.debug;
|
|
this.debugInfo = null;
|
|
this.fuzzyAttributeSearch = !!params.fuzzyAttributeSearch;
|
|
this.enableFuzzyMatching = true; // Default to true for backward compatibility
|
|
this.highlightedTokens = [];
|
|
this.originalQuery = "";
|
|
this.fulltextQuery = ""; // complete fulltext part
|
|
// if true, becca does not have (up-to-date) information needed to process the query
|
|
// and some extra data needs to be loaded before executing
|
|
this.dbLoadNeeded = false;
|
|
this.error = null;
|
|
}
|
|
|
|
addError(error: string) {
|
|
// we record only the first error, subsequent ones are usually a consequence of the first
|
|
if (!this.error) {
|
|
this.error = error;
|
|
}
|
|
}
|
|
|
|
hasError() {
|
|
return !!this.error;
|
|
}
|
|
|
|
getError() {
|
|
return this.error;
|
|
}
|
|
}
|
|
|
|
export default SearchContext;
|