diff --git a/src/backend/model/threading/MetadataLoader.ts b/src/backend/model/threading/MetadataLoader.ts index a0be144a..3b1ea216 100644 --- a/src/backend/model/threading/MetadataLoader.ts +++ b/src/backend/model/threading/MetadataLoader.ts @@ -45,6 +45,7 @@ export class MetadataLoader { try { for (const stream of data.streams) { + console.log(stream); if (stream.width) { metadata.size.width = stream.width; metadata.size.height = stream.height; diff --git a/src/common/SearchQueryParser.ts b/src/common/SearchQueryParser.ts index ef76f9ae..84c78d3b 100644 --- a/src/common/SearchQueryParser.ts +++ b/src/common/SearchQueryParser.ts @@ -357,7 +357,8 @@ export class SearchQueryParser { if (kwStartsWith(str, this.keywords.sameDay) || new RegExp('^' + SearchQueryParser.humanToRegexpStr(this.keywords.lastNDays) + '!?:').test(str)) { - const freqStr = str.slice(str.indexOf(':') + 1); + + const freqStr = str.indexOf('!:') === -1 ? str.slice(str.indexOf(':') + 1) : str.slice(str.indexOf('!:') + 2); let freq: DatePatternFrequency = null; let ago; if (freqStr == this.keywords.every_week) { @@ -381,15 +382,16 @@ export class SearchQueryParser { } if (freq) { - const ret = { + return { type: SearchQueryTypes.date_pattern, daysLength: kwStartsWith(str, this.keywords.sameDay) ? 0 : intFromRegexp(str), - frequency: freq + frequency: freq, + ...((new RegExp('^' + SearchQueryParser.humanToRegexpStr(this.keywords.lastNDays) + '!:').test(str) || + str.startsWith(this.keywords.sameDay + '!:')) && { + negate: true + }), + ...(ago && {agoNumber: ago}) } as DatePatternSearch; - if (ago) { - ret.agoNumber = ago; - } - return ret; } } @@ -586,6 +588,9 @@ export class SearchQueryParser { } else { strBuilder += this.keywords.lastNDays.replace(/%d/g, q.daysLength.toString()); } + if (q.negate === true) { + strBuilder += '!'; + } strBuilder += ':'; switch (q.frequency) { case DatePatternFrequency.every_week: diff --git a/test/common/unit/SearchQueryParser.ts b/test/common/unit/SearchQueryParser.ts index 04497dd0..279a914f 100644 --- a/test/common/unit/SearchQueryParser.ts +++ b/test/common/unit/SearchQueryParser.ts @@ -153,6 +153,12 @@ describe('SearchQueryParser', () => { frequency: DatePatternFrequency.years_ago, agoNumber: 1 } as DatePatternSearch); + check({ + type: SearchQueryTypes.date_pattern, daysLength: i, + frequency: DatePatternFrequency.years_ago, + agoNumber: 1, + negate: true + } as DatePatternSearch); } }); it('Default logical operator should be AND', () => {