mirror of
				https://github.com/zadam/trilium.git
				synced 2025-11-04 05:28:59 +01:00 
			
		
		
		
	server-ts: Port services/search/expressions/property_comparison
This commit is contained in:
		
							parent
							
								
									533a597a5c
								
							
						
					
					
						commit
						29b3fb3646
					
				@ -1,14 +1,14 @@
 | 
			
		||||
"use strict";
 | 
			
		||||
 | 
			
		||||
const Expression = require('./expression');
 | 
			
		||||
const NoteSet = require('../note_set');
 | 
			
		||||
const buildComparator = require('../services/build_comparator');
 | 
			
		||||
import Expression = require('./expression');
 | 
			
		||||
import NoteSet = require('../note_set');
 | 
			
		||||
import buildComparator = require('../services/build_comparator');
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Search string is lower cased for case-insensitive comparison. But when retrieving properties,
 | 
			
		||||
 * we need the case-sensitive form, so we have this translation object.
 | 
			
		||||
 */
 | 
			
		||||
const PROP_MAPPING = {
 | 
			
		||||
const PROP_MAPPING: Record<string, string> = {
 | 
			
		||||
    "noteid": "noteId",
 | 
			
		||||
    "title": "title",
 | 
			
		||||
    "type": "type",
 | 
			
		||||
@ -36,12 +36,22 @@ const PROP_MAPPING = {
 | 
			
		||||
    "revisioncount": "revisionCount"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
interface SearchContext {
 | 
			
		||||
    dbLoadNeeded?: boolean;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class PropertyComparisonExp extends Expression {
 | 
			
		||||
    static isProperty(name) {
 | 
			
		||||
 | 
			
		||||
    private propertyName: string;
 | 
			
		||||
    private operator: string;
 | 
			
		||||
    private comparedValue: string;
 | 
			
		||||
    private comparator;
 | 
			
		||||
 | 
			
		||||
    static isProperty(name: string) {
 | 
			
		||||
        return name in PROP_MAPPING;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    constructor(searchContext, propertyName, operator, comparedValue) {
 | 
			
		||||
    constructor(searchContext: SearchContext, propertyName: string, operator: string, comparedValue: string) {
 | 
			
		||||
        super();
 | 
			
		||||
 | 
			
		||||
        this.propertyName = PROP_MAPPING[propertyName];
 | 
			
		||||
@ -54,11 +64,11 @@ class PropertyComparisonExp extends Expression {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    execute(inputNoteSet, executionContext, searchContext) {
 | 
			
		||||
    execute(inputNoteSet: NoteSet, executionContext: {}, searchContext: SearchContext) {
 | 
			
		||||
        const resNoteSet = new NoteSet();
 | 
			
		||||
 | 
			
		||||
        for (const note of inputNoteSet.notes) {
 | 
			
		||||
            let value = note[this.propertyName];
 | 
			
		||||
            let value = (note as any)[this.propertyName];
 | 
			
		||||
 | 
			
		||||
            if (value !== undefined && value !== null && typeof value !== 'string') {
 | 
			
		||||
                value = value.toString();
 | 
			
		||||
@ -68,7 +78,7 @@ class PropertyComparisonExp extends Expression {
 | 
			
		||||
                value = value.toLowerCase();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (this.comparator(value)) {
 | 
			
		||||
            if (this.comparator && this.comparator(value)) {
 | 
			
		||||
                resNoteSet.add(note);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
@ -77,4 +87,4 @@ class PropertyComparisonExp extends Expression {
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
module.exports = PropertyComparisonExp;
 | 
			
		||||
export = PropertyComparisonExp;
 | 
			
		||||
@ -8,7 +8,7 @@ const ChildOfExp = require('../expressions/child_of');
 | 
			
		||||
const DescendantOfExp = require('../expressions/descendant_of');
 | 
			
		||||
const ParentOfExp = require('../expressions/parent_of');
 | 
			
		||||
const RelationWhereExp = require('../expressions/relation_where');
 | 
			
		||||
const PropertyComparisonExp = require('../expressions/property_comparison.js');
 | 
			
		||||
const PropertyComparisonExp = require('../expressions/property_comparison');
 | 
			
		||||
const AttributeExistsExp = require('../expressions/attribute_exists');
 | 
			
		||||
const LabelComparisonExp = require('../expressions/label_comparison');
 | 
			
		||||
const NoteFlatTextExp = require('../expressions/note_flat_text');
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user