mirror of
https://github.com/zadam/trilium.git
synced 2025-03-01 14:22:32 +01:00
85 lines
2.5 KiB
TypeScript
85 lines
2.5 KiB
TypeScript
"use strict";
|
|
|
|
import hoistedNoteService = require('../hoisted_note');
|
|
|
|
interface SearchParams {
|
|
fastSearch?: boolean;
|
|
includeArchivedNotes?: boolean;
|
|
includeHiddenNotes?: boolean;
|
|
ignoreHoistedNote?: boolean;
|
|
ancestorNoteId?: string;
|
|
ancestorDepth?: string;
|
|
orderBy?: string;
|
|
orderDirection?: string;
|
|
limit?: number;
|
|
debug?: boolean;
|
|
fuzzyAttributeSearch?: boolean;
|
|
}
|
|
|
|
class SearchContext {
|
|
|
|
fastSearch: boolean;
|
|
includeArchivedNotes: boolean;
|
|
includeHiddenNotes: boolean;
|
|
ignoreHoistedNote: boolean;
|
|
ancestorNoteId?: string;
|
|
ancestorDepth?: string;
|
|
orderBy?: string;
|
|
orderDirection?: string;
|
|
limit?: number;
|
|
debug?: boolean;
|
|
debugInfo: string | null;
|
|
fuzzyAttributeSearch: boolean;
|
|
highlightedTokens: string[];
|
|
originalQuery: string;
|
|
fulltextQuery: string;
|
|
dbLoadNeeded: boolean;
|
|
private error: string | null;
|
|
|
|
constructor(params: SearchParams = {}) {
|
|
this.fastSearch = !!params.fastSearch;
|
|
this.includeArchivedNotes = !!params.includeArchivedNotes;
|
|
this.includeHiddenNotes = !!params.includeHiddenNotes;
|
|
this.ignoreHoistedNote = !!params.ignoreHoistedNote;
|
|
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.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 = SearchContext;
|