From 76cbcc03e0b91b2e03492f721ef7d50f5c83136e Mon Sep 17 00:00:00 2001 From: Ryan Bianchi <1435081+qedi-r@users.noreply.github.com> Date: Mon, 14 Oct 2024 16:57:29 -0400 Subject: [PATCH 01/17] filter out transfers when category is none --- .../src/components/accounts/Account.tsx | 1 + .../src/server/accounts/transaction-rules.ts | 19 ++++++++++++++++++- packages/loot-core/src/shared/rules.ts | 1 + packages/loot-core/src/types/models/rule.d.ts | 1 + 4 files changed, 21 insertions(+), 1 deletion(-) diff --git a/packages/desktop-client/src/components/accounts/Account.tsx b/packages/desktop-client/src/components/accounts/Account.tsx index 65783c08914..de799a4a11a 100644 --- a/packages/desktop-client/src/components/accounts/Account.tsx +++ b/packages/desktop-client/src/components/accounts/Account.tsx @@ -1449,6 +1449,7 @@ class AccountInternal extends PureComponent< ), }, ); + debugger; const conditionsOpKey = this.state.filterConditionsOp === 'or' ? '$or' : '$and'; this.currentQuery = this.rootQuery.filter({ diff --git a/packages/loot-core/src/server/accounts/transaction-rules.ts b/packages/loot-core/src/server/accounts/transaction-rules.ts index d32eb9324fb..dd72038f0f2 100644 --- a/packages/loot-core/src/server/accounts/transaction-rules.ts +++ b/packages/loot-core/src/server/accounts/transaction-rules.ts @@ -309,11 +309,18 @@ export function conditionsToAQL(conditions, { recurDateBounds = 100 } = {}) { return null; } }) + .flatMap(cond => { + //special cases that require multiple conditions + if (cond.op === 'is' && cond.field === 'category' && cond.value === null) { + return [cond, new Condition('is', 'transfer', false, null)]; + } + return [cond]; + }) .filter(Boolean); // rule -> actualql const filters = conditions.map(cond => { - const { type, field, op, value, options } = cond; + let { type, field, op, value, options } = cond; const getValue = value => { if (type === 'number') { @@ -322,6 +329,16 @@ export function conditionsToAQL(conditions, { recurDateBounds = 100 } = {}) { return value; }; + if (field === 'transfer' && op === 'is') { + field = "transfer_id"; + if (value) { + op = 'gt'; + value = 0; + } else { + value = null; + } + } + const apply = (field, op, value) => { if (type === 'number') { if (options) { diff --git a/packages/loot-core/src/shared/rules.ts b/packages/loot-core/src/shared/rules.ts index a779e79714e..bbad4efb2be 100644 --- a/packages/loot-core/src/shared/rules.ts +++ b/packages/loot-core/src/shared/rules.ts @@ -72,6 +72,7 @@ const FIELD_INFO = { cleared: { type: 'boolean' }, reconciled: { type: 'boolean' }, saved: { type: 'saved' }, + transfer: { type: 'boolean' }, } as const satisfies FieldInfoConstraint; const fieldInfo: FieldInfoConstraint = FIELD_INFO; diff --git a/packages/loot-core/src/types/models/rule.d.ts b/packages/loot-core/src/types/models/rule.d.ts index 1bfc9c0a0cd..a28e55ef63b 100644 --- a/packages/loot-core/src/types/models/rule.d.ts +++ b/packages/loot-core/src/types/models/rule.d.ts @@ -38,6 +38,7 @@ type FieldValueTypes = { payee_name: string; imported_payee: string; saved: string; + transfer: boolean; cleared: boolean; reconciled: boolean; }; From 67eea09d8c0c8f770e428b29445589dec48139c1 Mon Sep 17 00:00:00 2001 From: Ryan Bianchi <1435081+qedi-r@users.noreply.github.com> Date: Mon, 14 Oct 2024 16:57:29 -0400 Subject: [PATCH 02/17] add filter for parent id --- .../src/server/accounts/transaction-rules.ts | 12 +++++++++++- packages/loot-core/src/shared/rules.ts | 1 + packages/loot-core/src/types/models/rule.d.ts | 1 + 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/loot-core/src/server/accounts/transaction-rules.ts b/packages/loot-core/src/server/accounts/transaction-rules.ts index dd72038f0f2..5c65fa5bcd7 100644 --- a/packages/loot-core/src/server/accounts/transaction-rules.ts +++ b/packages/loot-core/src/server/accounts/transaction-rules.ts @@ -312,7 +312,10 @@ export function conditionsToAQL(conditions, { recurDateBounds = 100 } = {}) { .flatMap(cond => { //special cases that require multiple conditions if (cond.op === 'is' && cond.field === 'category' && cond.value === null) { - return [cond, new Condition('is', 'transfer', false, null)]; + return [cond, + new Condition('is', 'transfer', false, null), + new Condition('is', 'parent', false, null) + ]; } return [cond]; }) @@ -337,6 +340,13 @@ export function conditionsToAQL(conditions, { recurDateBounds = 100 } = {}) { } else { value = null; } + } else if (field === 'parent' && op === 'is') { + field = "is_parent"; + if (value) { + op = 'true' + } else { + op = 'false' + } } const apply = (field, op, value) => { diff --git a/packages/loot-core/src/shared/rules.ts b/packages/loot-core/src/shared/rules.ts index bbad4efb2be..62b2edb916b 100644 --- a/packages/loot-core/src/shared/rules.ts +++ b/packages/loot-core/src/shared/rules.ts @@ -73,6 +73,7 @@ const FIELD_INFO = { reconciled: { type: 'boolean' }, saved: { type: 'saved' }, transfer: { type: 'boolean' }, + parent: { type: 'boolean' }, } as const satisfies FieldInfoConstraint; const fieldInfo: FieldInfoConstraint = FIELD_INFO; diff --git a/packages/loot-core/src/types/models/rule.d.ts b/packages/loot-core/src/types/models/rule.d.ts index a28e55ef63b..1a0351fd118 100644 --- a/packages/loot-core/src/types/models/rule.d.ts +++ b/packages/loot-core/src/types/models/rule.d.ts @@ -39,6 +39,7 @@ type FieldValueTypes = { imported_payee: string; saved: string; transfer: boolean; + parent: boolean; cleared: boolean; reconciled: boolean; }; From 02a0c67c7d8a1fc4904113e605a99e78dd0951ac Mon Sep 17 00:00:00 2001 From: Ryan Bianchi <1435081+qedi-r@users.noreply.github.com> Date: Mon, 14 Oct 2024 16:57:29 -0400 Subject: [PATCH 03/17] fix Category is not (nothing) as well --- .../desktop-client/src/components/filters/FiltersMenu.jsx | 1 + packages/loot-core/src/server/accounts/transaction-rules.ts | 4 ++-- packages/loot-core/src/server/aql/compiler.ts | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/desktop-client/src/components/filters/FiltersMenu.jsx b/packages/desktop-client/src/components/filters/FiltersMenu.jsx index 2c379293cea..c6ec6b583d7 100644 --- a/packages/desktop-client/src/components/filters/FiltersMenu.jsx +++ b/packages/desktop-client/src/components/filters/FiltersMenu.jsx @@ -54,6 +54,7 @@ const filterFields = [ 'cleared', 'reconciled', 'saved', + 'transfer', ].map(field => [field, mapField(field)]); function ConfigureField({ diff --git a/packages/loot-core/src/server/accounts/transaction-rules.ts b/packages/loot-core/src/server/accounts/transaction-rules.ts index 5c65fa5bcd7..f439561a917 100644 --- a/packages/loot-core/src/server/accounts/transaction-rules.ts +++ b/packages/loot-core/src/server/accounts/transaction-rules.ts @@ -335,8 +335,8 @@ export function conditionsToAQL(conditions, { recurDateBounds = 100 } = {}) { if (field === 'transfer' && op === 'is') { field = "transfer_id"; if (value) { - op = 'gt'; - value = 0; + op = 'isNot'; + value = null; } else { value = null; } diff --git a/packages/loot-core/src/server/aql/compiler.ts b/packages/loot-core/src/server/aql/compiler.ts index de665f9e0b3..1d23d8f55fa 100644 --- a/packages/loot-core/src/server/aql/compiler.ts +++ b/packages/loot-core/src/server/aql/compiler.ts @@ -694,7 +694,7 @@ const compileOp = saveStack('op', (state, fieldRef, opData) => { } case '$ne': { if (castInput(state, rhs, lhs.type).type === 'null') { - return `${val(state, lhs)} IS NULL`; + return `${val(state, lhs)} IS NOT NULL`; } const [left, right] = valArray(state, [lhs, rhs], [null, lhs.type]); From f07a58934ab7d5045da75ac484844a2384ad13b2 Mon Sep 17 00:00:00 2001 From: Ryan Bianchi <1435081+qedi-r@users.noreply.github.com> Date: Mon, 14 Oct 2024 16:57:29 -0400 Subject: [PATCH 04/17] lint fixups --- .../src/components/accounts/Account.tsx | 1 - .../src/server/accounts/transaction-rules.ts | 34 +++++++++++-------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/packages/desktop-client/src/components/accounts/Account.tsx b/packages/desktop-client/src/components/accounts/Account.tsx index de799a4a11a..65783c08914 100644 --- a/packages/desktop-client/src/components/accounts/Account.tsx +++ b/packages/desktop-client/src/components/accounts/Account.tsx @@ -1449,7 +1449,6 @@ class AccountInternal extends PureComponent< ), }, ); - debugger; const conditionsOpKey = this.state.filterConditionsOp === 'or' ? '$or' : '$and'; this.currentQuery = this.rootQuery.filter({ diff --git a/packages/loot-core/src/server/accounts/transaction-rules.ts b/packages/loot-core/src/server/accounts/transaction-rules.ts index f439561a917..19d6058a462 100644 --- a/packages/loot-core/src/server/accounts/transaction-rules.ts +++ b/packages/loot-core/src/server/accounts/transaction-rules.ts @@ -310,20 +310,26 @@ export function conditionsToAQL(conditions, { recurDateBounds = 100 } = {}) { } }) .flatMap(cond => { - //special cases that require multiple conditions - if (cond.op === 'is' && cond.field === 'category' && cond.value === null) { - return [cond, - new Condition('is', 'transfer', false, null), - new Condition('is', 'parent', false, null) - ]; - } - return [cond]; - }) + //special cases that require multiple conditions + if ( + cond.op === 'is' && + cond.field === 'category' && + cond.value === null + ) { + return [ + cond, + new Condition('is', 'transfer', false, null), + new Condition('is', 'parent', false, null), + ]; + } + return [cond]; + }) .filter(Boolean); // rule -> actualql const filters = conditions.map(cond => { - let { type, field, op, value, options } = cond; + const { type, options } = cond; + let { field, op, value } = cond; const getValue = value => { if (type === 'number') { @@ -333,7 +339,7 @@ export function conditionsToAQL(conditions, { recurDateBounds = 100 } = {}) { }; if (field === 'transfer' && op === 'is') { - field = "transfer_id"; + field = 'transfer_id'; if (value) { op = 'isNot'; value = null; @@ -341,11 +347,11 @@ export function conditionsToAQL(conditions, { recurDateBounds = 100 } = {}) { value = null; } } else if (field === 'parent' && op === 'is') { - field = "is_parent"; + field = 'is_parent'; if (value) { - op = 'true' + op = 'true'; } else { - op = 'false' + op = 'false'; } } From d4b787dab38f7d5810a3b85b982d837f76038a21 Mon Sep 17 00:00:00 2001 From: Ryan Bianchi <1435081+qedi-r@users.noreply.github.com> Date: Mon, 14 Oct 2024 17:45:40 -0400 Subject: [PATCH 05/17] add special case for 'category is not nothing' --- .../src/server/accounts/transaction-rules.ts | 34 +++++++++++-------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/packages/loot-core/src/server/accounts/transaction-rules.ts b/packages/loot-core/src/server/accounts/transaction-rules.ts index 19d6058a462..e158f23156a 100644 --- a/packages/loot-core/src/server/accounts/transaction-rules.ts +++ b/packages/loot-core/src/server/accounts/transaction-rules.ts @@ -291,6 +291,24 @@ export async function runRules(trans) { return await finalizeTransactionForRules(finalTrans); } +function conditionSpecialCases(cond: Condition): Condition[] { + //special cases that require multiple conditions + if (cond.op === 'is' && cond.field === 'category' && cond.value === null) { + return [ + cond, + new Condition('is', 'transfer', false, null), + new Condition('is', 'parent', false, null), + ]; + } else if ( + cond.op === 'isNot' && + cond.field === 'category' && + cond.value === null + ) { + return [cond, new Condition('is', 'parent', false, null)]; + } + return [cond]; +} + // This does the inverse: finds all the transactions matching a rule export function conditionsToAQL(conditions, { recurDateBounds = 100 } = {}) { const errors = []; @@ -309,21 +327,7 @@ export function conditionsToAQL(conditions, { recurDateBounds = 100 } = {}) { return null; } }) - .flatMap(cond => { - //special cases that require multiple conditions - if ( - cond.op === 'is' && - cond.field === 'category' && - cond.value === null - ) { - return [ - cond, - new Condition('is', 'transfer', false, null), - new Condition('is', 'parent', false, null), - ]; - } - return [cond]; - }) + .flatMap(conditionSpecialCases) .filter(Boolean); // rule -> actualql From 84b0ead1cf7a89f5953459b94c1d175d8388cf09 Mon Sep 17 00:00:00 2001 From: Ryan Bianchi <1435081+qedi-r@users.noreply.github.com> Date: Mon, 14 Oct 2024 17:51:53 -0400 Subject: [PATCH 06/17] add release notes --- upcoming-release-notes/3669.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 upcoming-release-notes/3669.md diff --git a/upcoming-release-notes/3669.md b/upcoming-release-notes/3669.md new file mode 100644 index 00000000000..4e5ba539dcd --- /dev/null +++ b/upcoming-release-notes/3669.md @@ -0,0 +1,6 @@ +--- +category: Bugfix +authors: [qedi-r] +--- + +Fix category filters when the value is '(nothing)' From 8d8256689aa8fcd43049e5f2c31f9e87a2ac8317 Mon Sep 17 00:00:00 2001 From: Ryan Bianchi <1435081+qedi-r@users.noreply.github.com> Date: Mon, 21 Oct 2024 19:20:35 -0400 Subject: [PATCH 07/17] adding tests --- packages/loot-core/src/server/aql/compiler.test.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/loot-core/src/server/aql/compiler.test.ts b/packages/loot-core/src/server/aql/compiler.test.ts index cc2add5ddbb..27ff6f21ff4 100644 --- a/packages/loot-core/src/server/aql/compiler.test.ts +++ b/packages/loot-core/src/server/aql/compiler.test.ts @@ -951,4 +951,13 @@ describe('Type conversions', () => { ); expect(result.sql).toMatch('WHERE (transactions.payee IS NULL)'); }); + + it('allows fields to be not nullable', () => { + // With validated refs + let result = generateSQLWithState( + q('transactions').filter({ payee: { '$ne': null }}).select().serialize(), + schemaWithRefs, + ); + expect(result.sql).toMatch('WHERE (payees1.id IS NOT NULL)'); + }); }); From 4b4d58e52f7531a30e173ea6b0482e51b10944a2 Mon Sep 17 00:00:00 2001 From: Ryan Bianchi <1435081+qedi-r@users.noreply.github.com> Date: Sat, 2 Nov 2024 10:59:26 -0400 Subject: [PATCH 08/17] lint fix --- packages/loot-core/src/server/aql/compiler.test.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/loot-core/src/server/aql/compiler.test.ts b/packages/loot-core/src/server/aql/compiler.test.ts index 27ff6f21ff4..fe56fb53288 100644 --- a/packages/loot-core/src/server/aql/compiler.test.ts +++ b/packages/loot-core/src/server/aql/compiler.test.ts @@ -954,8 +954,11 @@ describe('Type conversions', () => { it('allows fields to be not nullable', () => { // With validated refs - let result = generateSQLWithState( - q('transactions').filter({ payee: { '$ne': null }}).select().serialize(), + const result = generateSQLWithState( + q('transactions') + .filter({ payee: { $ne: null } }) + .select() + .serialize(), schemaWithRefs, ); expect(result.sql).toMatch('WHERE (payees1.id IS NOT NULL)'); From 39ea5df5a1dcbad3058ae0a519ea6a82546ed093 Mon Sep 17 00:00:00 2001 From: Ryan Bianchi <1435081+qedi-r@users.noreply.github.com> Date: Sun, 3 Nov 2024 11:56:55 -0500 Subject: [PATCH 09/17] use $and expression for complex condition special cases --- .../loot-core/src/server/accounts/rules.ts | 3 +- .../server/accounts/transaction-rules.test.ts | 15 +++++++ .../src/server/accounts/transaction-rules.ts | 39 +++++++++++++------ packages/loot-core/src/shared/rules.ts | 1 + 4 files changed, 46 insertions(+), 12 deletions(-) diff --git a/packages/loot-core/src/server/accounts/rules.ts b/packages/loot-core/src/server/accounts/rules.ts index dd82192205e..d1657b9e4ff 100644 --- a/packages/loot-core/src/server/accounts/rules.ts +++ b/packages/loot-core/src/server/accounts/rules.ts @@ -200,10 +200,11 @@ const CONDITION_TYPES = { 'isNot', 'doesNotContain', 'notOneOf', + 'subExpression', ], nullable: true, parse(op, value, fieldName) { - if (op === 'oneOf' || op === 'notOneOf') { + if (op === 'oneOf' || op === 'notOneOf' || op === 'subExpression') { assert( Array.isArray(value), 'no-empty-array', diff --git a/packages/loot-core/src/server/accounts/transaction-rules.test.ts b/packages/loot-core/src/server/accounts/transaction-rules.test.ts index 4a043e0ef09..f26f4d3c5b5 100644 --- a/packages/loot-core/src/server/accounts/transaction-rules.test.ts +++ b/packages/loot-core/src/server/accounts/transaction-rules.test.ts @@ -494,6 +494,21 @@ describe('Transaction rules', () => { // todo: isapprox }); + + test('subexpression builds $and condition', async () => { + const conds = [{ field: 'category', op: 'is', value: null }]; + debugger; + const { filters } = conditionsToAQL(conds); + expect(filters).toStrictEqual([ + { + $and: [ + { category: { $eq: null } }, + { transfer_id: { $eq: null } }, + { is_parent: { $eq: false } }, + ], + }, + ]); + }); }); describe('Learning categories', () => { diff --git a/packages/loot-core/src/server/accounts/transaction-rules.ts b/packages/loot-core/src/server/accounts/transaction-rules.ts index e158f23156a..a4c109c872a 100644 --- a/packages/loot-core/src/server/accounts/transaction-rules.ts +++ b/packages/loot-core/src/server/accounts/transaction-rules.ts @@ -291,22 +291,32 @@ export async function runRules(trans) { return await finalizeTransactionForRules(finalTrans); } -function conditionSpecialCases(cond: Condition): Condition[] { +function conditionSpecialCases(cond: Condition): Condition { //special cases that require multiple conditions if (cond.op === 'is' && cond.field === 'category' && cond.value === null) { - return [ - cond, - new Condition('is', 'transfer', false, null), - new Condition('is', 'parent', false, null), - ]; + return new Condition( + 'subExpression', + cond.field, + [ + cond, + new Condition('is', 'transfer', false, null), + new Condition('is', 'parent', false, null), + ], + {}, + ); } else if ( cond.op === 'isNot' && cond.field === 'category' && cond.value === null ) { - return [cond, new Condition('is', 'parent', false, null)]; + return new Condition( + 'subExpression', + cond.field, + [cond, new Condition('is', 'parent', false, null)], + {}, + ); } - return [cond]; + return cond; } // This does the inverse: finds all the transactions matching a rule @@ -327,11 +337,11 @@ export function conditionsToAQL(conditions, { recurDateBounds = 100 } = {}) { return null; } }) - .flatMap(conditionSpecialCases) + .map(conditionSpecialCases) .filter(Boolean); // rule -> actualql - const filters = conditions.map(cond => { + const mapConditionToActualQL = cond => { const { type, options } = cond; let { field, op, value } = cond; @@ -541,11 +551,18 @@ export function conditionsToAQL(conditions, { recurDateBounds = 100 } = {}) { return apply(field, '$eq', true); case 'false': return apply(field, '$eq', false); + case 'subExpression': + debugger; + return { + $and: getValue(value).map(subExpr => mapConditionToActualQL(subExpr)), + }; default: + debugger; throw new Error('Unhandled operator: ' + op); } - }); + }; + const filters = conditions.map(mapConditionToActualQL); return { filters, errors }; } diff --git a/packages/loot-core/src/shared/rules.ts b/packages/loot-core/src/shared/rules.ts index 62b2edb916b..433b3c105fa 100644 --- a/packages/loot-core/src/shared/rules.ts +++ b/packages/loot-core/src/shared/rules.ts @@ -22,6 +22,7 @@ const TYPE_INFO = { 'doesNotContain', 'notOneOf', 'hasTags', + 'subExpression', ], nullable: true, }, From 7a29cc64b78d74759fe8b6182c40e1feb955c11c Mon Sep 17 00:00:00 2001 From: Ryan Bianchi <1435081+qedi-r@users.noreply.github.com> Date: Sun, 3 Nov 2024 12:16:31 -0500 Subject: [PATCH 10/17] add tests for condition special cases --- .../server/accounts/transaction-rules.test.ts | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/packages/loot-core/src/server/accounts/transaction-rules.test.ts b/packages/loot-core/src/server/accounts/transaction-rules.test.ts index f26f4d3c5b5..aa7e7fbd3e2 100644 --- a/packages/loot-core/src/server/accounts/transaction-rules.test.ts +++ b/packages/loot-core/src/server/accounts/transaction-rules.test.ts @@ -372,14 +372,14 @@ describe('Transaction rules', () => { await loadRules(); const account = await db.insertAccount({ name: 'bank' }); const categoryGroupId = await db.insertCategoryGroup({ name: 'general' }); - const categoryId = await db.insertCategory({ + const foodCategoryId = await db.insertCategory({ name: 'food', cat_group: categoryGroupId, }); const krogerId = await db.insertPayee({ name: 'kroger' }); const lowesId = await db.insertPayee({ name: 'lowes', - category: categoryId, + category: foodCategoryId, }); await db.insertTransaction({ @@ -387,6 +387,7 @@ describe('Transaction rules', () => { date: '2020-10-01', account, payee: krogerId, + category: foodCategoryId, notes: 'barr', amount: 353, }); @@ -419,6 +420,7 @@ describe('Transaction rules', () => { date: '2020-10-16', account, payee: lowesId, + category: foodCategoryId, notes: '', amount: 124, }); @@ -492,6 +494,19 @@ describe('Transaction rules', () => { ]); expect(transactions.map(t => t.id)).toEqual(['4', '5', '2', '3']); + //Condition special cases + //is category null + transactions = await getMatchingTransactions([ + { field: 'category', op: 'is', value: null }, + ]); + expect(transactions.map(t => t.id)).toEqual(['4', '2', '3']); + + //category is not X + transactions = await getMatchingTransactions([ + { field: 'category', op: 'isNot', value: null }, + ]); + expect(transactions.map(t => t.id)).toEqual(['5', '1']); + // todo: isapprox }); From 7117a31aa0f03b66ce0fc76ffd67ef114f367cb7 Mon Sep 17 00:00:00 2001 From: Ryan Bianchi <1435081+qedi-r@users.noreply.github.com> Date: Sun, 3 Nov 2024 14:47:45 -0500 Subject: [PATCH 11/17] Update packages/loot-core/src/server/accounts/rules.ts rename subExpression to and Co-authored-by: Koen van Staveren --- packages/loot-core/src/server/accounts/rules.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/loot-core/src/server/accounts/rules.ts b/packages/loot-core/src/server/accounts/rules.ts index d1657b9e4ff..3f9f17b7267 100644 --- a/packages/loot-core/src/server/accounts/rules.ts +++ b/packages/loot-core/src/server/accounts/rules.ts @@ -200,7 +200,7 @@ const CONDITION_TYPES = { 'isNot', 'doesNotContain', 'notOneOf', - 'subExpression', + 'and', ], nullable: true, parse(op, value, fieldName) { From a39f286b308e9e1009e924516d9cac69fb6d2b2b Mon Sep 17 00:00:00 2001 From: Ryan Bianchi <1435081+qedi-r@users.noreply.github.com> Date: Sun, 3 Nov 2024 14:51:56 -0500 Subject: [PATCH 12/17] update uses of subExpression with and --- packages/loot-core/src/server/accounts/rules.ts | 2 +- .../loot-core/src/server/accounts/transaction-rules.test.ts | 2 +- packages/loot-core/src/server/accounts/transaction-rules.ts | 6 +++--- packages/loot-core/src/shared/rules.ts | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/loot-core/src/server/accounts/rules.ts b/packages/loot-core/src/server/accounts/rules.ts index 3f9f17b7267..20f9ea2d219 100644 --- a/packages/loot-core/src/server/accounts/rules.ts +++ b/packages/loot-core/src/server/accounts/rules.ts @@ -204,7 +204,7 @@ const CONDITION_TYPES = { ], nullable: true, parse(op, value, fieldName) { - if (op === 'oneOf' || op === 'notOneOf' || op === 'subExpression') { + if (op === 'oneOf' || op === 'notOneOf' || op === 'and') { assert( Array.isArray(value), 'no-empty-array', diff --git a/packages/loot-core/src/server/accounts/transaction-rules.test.ts b/packages/loot-core/src/server/accounts/transaction-rules.test.ts index aa7e7fbd3e2..c418ef8f9b8 100644 --- a/packages/loot-core/src/server/accounts/transaction-rules.test.ts +++ b/packages/loot-core/src/server/accounts/transaction-rules.test.ts @@ -510,7 +510,7 @@ describe('Transaction rules', () => { // todo: isapprox }); - test('subexpression builds $and condition', async () => { + test('and sub expression builds $and condition', async () => { const conds = [{ field: 'category', op: 'is', value: null }]; debugger; const { filters } = conditionsToAQL(conds); diff --git a/packages/loot-core/src/server/accounts/transaction-rules.ts b/packages/loot-core/src/server/accounts/transaction-rules.ts index a4c109c872a..3e44cf90d9e 100644 --- a/packages/loot-core/src/server/accounts/transaction-rules.ts +++ b/packages/loot-core/src/server/accounts/transaction-rules.ts @@ -295,7 +295,7 @@ function conditionSpecialCases(cond: Condition): Condition { //special cases that require multiple conditions if (cond.op === 'is' && cond.field === 'category' && cond.value === null) { return new Condition( - 'subExpression', + 'and', cond.field, [ cond, @@ -310,7 +310,7 @@ function conditionSpecialCases(cond: Condition): Condition { cond.value === null ) { return new Condition( - 'subExpression', + 'and', cond.field, [cond, new Condition('is', 'parent', false, null)], {}, @@ -551,7 +551,7 @@ export function conditionsToAQL(conditions, { recurDateBounds = 100 } = {}) { return apply(field, '$eq', true); case 'false': return apply(field, '$eq', false); - case 'subExpression': + case 'and': debugger; return { $and: getValue(value).map(subExpr => mapConditionToActualQL(subExpr)), diff --git a/packages/loot-core/src/shared/rules.ts b/packages/loot-core/src/shared/rules.ts index 433b3c105fa..056750a7a60 100644 --- a/packages/loot-core/src/shared/rules.ts +++ b/packages/loot-core/src/shared/rules.ts @@ -22,7 +22,7 @@ const TYPE_INFO = { 'doesNotContain', 'notOneOf', 'hasTags', - 'subExpression', + 'and', ], nullable: true, }, From 1d712c922a1fc0b676e54c042b4ede31a886572f Mon Sep 17 00:00:00 2001 From: Ryan Bianchi <1435081+qedi-r@users.noreply.github.com> Date: Tue, 5 Nov 2024 19:55:12 -0500 Subject: [PATCH 13/17] remove stray debugger rules --- .../loot-core/src/server/accounts/transaction-rules.test.ts | 1 - packages/loot-core/src/server/accounts/transaction-rules.ts | 2 -- 2 files changed, 3 deletions(-) diff --git a/packages/loot-core/src/server/accounts/transaction-rules.test.ts b/packages/loot-core/src/server/accounts/transaction-rules.test.ts index c418ef8f9b8..37fe3e238f9 100644 --- a/packages/loot-core/src/server/accounts/transaction-rules.test.ts +++ b/packages/loot-core/src/server/accounts/transaction-rules.test.ts @@ -512,7 +512,6 @@ describe('Transaction rules', () => { test('and sub expression builds $and condition', async () => { const conds = [{ field: 'category', op: 'is', value: null }]; - debugger; const { filters } = conditionsToAQL(conds); expect(filters).toStrictEqual([ { diff --git a/packages/loot-core/src/server/accounts/transaction-rules.ts b/packages/loot-core/src/server/accounts/transaction-rules.ts index 3e44cf90d9e..2c2569a5fc8 100644 --- a/packages/loot-core/src/server/accounts/transaction-rules.ts +++ b/packages/loot-core/src/server/accounts/transaction-rules.ts @@ -552,12 +552,10 @@ export function conditionsToAQL(conditions, { recurDateBounds = 100 } = {}) { case 'false': return apply(field, '$eq', false); case 'and': - debugger; return { $and: getValue(value).map(subExpr => mapConditionToActualQL(subExpr)), }; default: - debugger; throw new Error('Unhandled operator: ' + op); } }; From a837ac614fef6c0cff2c68ba5f0825ca2ce801b0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 7 Nov 2024 16:08:13 +0000 Subject: [PATCH 14/17] Update VRT --- ...nsactions-by-category-1-chromium-linux.png | Bin 11822 -> 12008 bytes ...nsactions-by-category-2-chromium-linux.png | Bin 11696 -> 11898 bytes ...nsactions-by-category-3-chromium-linux.png | Bin 11656 -> 11857 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/packages/desktop-client/e2e/transactions.test.js-snapshots/Transactions-filters-transactions-by-category-1-chromium-linux.png b/packages/desktop-client/e2e/transactions.test.js-snapshots/Transactions-filters-transactions-by-category-1-chromium-linux.png index fbac8396fa545c20390542ce6e8d4ad743981dec..b3011777fd0373b32892332285598812dcbe17af 100644 GIT binary patch literal 12008 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 literal 11822 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 literal 11696 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 diff --git a/packages/desktop-client/e2e/transactions.test.js-snapshots/Transactions-filters-transactions-by-category-3-chromium-linux.png b/packages/desktop-client/e2e/transactions.test.js-snapshots/Transactions-filters-transactions-by-category-3-chromium-linux.png index 5ec0c0efbc558e6c314f3ff6bba1c01d355d1eb6..6864c5d45fac89484d32046d1ed41436e6e70caa 100644 GIT binary patch literal 11857 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 literal 11656 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 F{{!ihED!(y From f2941563845429b9b4dd1470a1dc4672ad6f3f67 Mon Sep 17 00:00:00 2001 From: Ryan Bianchi <1435081+qedi-r@users.noreply.github.com> Date: Thu, 7 Nov 2024 17:32:55 -0500 Subject: [PATCH 15/17] Revert "Update VRT" This reverts commit a450fc7b2457bb578e53f62d5f4201e91e9a93c4. --- ...nsactions-by-category-1-chromium-linux.png | Bin 12008 -> 11822 bytes ...nsactions-by-category-2-chromium-linux.png | Bin 11898 -> 11696 bytes ...nsactions-by-category-3-chromium-linux.png | Bin 11857 -> 11656 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/packages/desktop-client/e2e/transactions.test.js-snapshots/Transactions-filters-transactions-by-category-1-chromium-linux.png b/packages/desktop-client/e2e/transactions.test.js-snapshots/Transactions-filters-transactions-by-category-1-chromium-linux.png index b3011777fd0373b32892332285598812dcbe17af..fbac8396fa545c20390542ce6e8d4ad743981dec 100644 GIT binary patch literal 11822 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 diff --git a/packages/desktop-client/e2e/transactions.test.js-snapshots/Transactions-filters-transactions-by-category-2-chromium-linux.png b/packages/desktop-client/e2e/transactions.test.js-snapshots/Transactions-filters-transactions-by-category-2-chromium-linux.png index 150218009cf19bb01691c80203546a517db1b02b..cd6cc7d544e622b89b12bc48ffcf8e06b5f24a01 100644 GIT binary patch literal 11696 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 literal 11898 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 diff --git a/packages/desktop-client/e2e/transactions.test.js-snapshots/Transactions-filters-transactions-by-category-3-chromium-linux.png b/packages/desktop-client/e2e/transactions.test.js-snapshots/Transactions-filters-transactions-by-category-3-chromium-linux.png index 6864c5d45fac89484d32046d1ed41436e6e70caa..5ec0c0efbc558e6c314f3ff6bba1c01d355d1eb6 100644 GIT binary patch literal 11656 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 F{{!ihED!(y literal 11857 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 From be1485a681f63f020ebe3bcca63bbfd1ecc2c4dc Mon Sep 17 00:00:00 2001 From: Ryan Bianchi <1435081+qedi-r@users.noreply.github.com> Date: Thu, 7 Nov 2024 17:35:37 -0500 Subject: [PATCH 16/17] make and an internal op to avoid exposing it to the UI --- packages/loot-core/src/shared/rules.ts | 13 +++++++++---- packages/loot-core/src/types/models/rule.d.ts | 1 + 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/loot-core/src/shared/rules.ts b/packages/loot-core/src/shared/rules.ts index 056750a7a60..bac5f81151d 100644 --- a/packages/loot-core/src/shared/rules.ts +++ b/packages/loot-core/src/shared/rules.ts @@ -22,7 +22,6 @@ const TYPE_INFO = { 'doesNotContain', 'notOneOf', 'hasTags', - 'and', ], nullable: true, }, @@ -55,7 +54,11 @@ const TYPE_INFO = { type FieldInfoConstraint = Record< keyof FieldValueTypes, - { type: keyof typeof TYPE_INFO; disallowedOps?: Set } + { + type: keyof typeof TYPE_INFO; + disallowedOps?: Set; + internalOps?: Set; + } >; const FIELD_INFO = { @@ -68,7 +71,7 @@ const FIELD_INFO = { date: { type: 'date' }, notes: { type: 'string' }, amount: { type: 'number' }, - category: { type: 'id' }, + category: { type: 'id', internalOps: new Set(['and']) }, account: { type: 'id' }, cleared: { type: 'boolean' }, reconciled: { type: 'boolean' }, @@ -92,7 +95,9 @@ export function isValidOp(field: keyof FieldValueTypes, op: RuleConditionOp) { return false; } return ( - TYPE_INFO[type].ops.includes(op) && !fieldInfo[field].disallowedOps?.has(op) + (TYPE_INFO[type].ops.includes(op) || + fieldInfo[field].internalOps?.has(op)) && + !fieldInfo[field].disallowedOps?.has(op) ); } diff --git a/packages/loot-core/src/types/models/rule.d.ts b/packages/loot-core/src/types/models/rule.d.ts index 1a0351fd118..5cbbe7d3697 100644 --- a/packages/loot-core/src/types/models/rule.d.ts +++ b/packages/loot-core/src/types/models/rule.d.ts @@ -26,6 +26,7 @@ export type RuleConditionOp = | 'contains' | 'doesNotContain' | 'hasTags' + | 'and' | 'matches'; type FieldValueTypes = { From 5b5afa55b44f32f071f36fc58f41409c86a4d76c Mon Sep 17 00:00:00 2001 From: matt Date: Wed, 20 Nov 2024 11:30:47 +0000 Subject: [PATCH 17/17] feedback --- packages/loot-core/src/shared/rules.ts | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/packages/loot-core/src/shared/rules.ts b/packages/loot-core/src/shared/rules.ts index bac5f81151d..c5de63ce591 100644 --- a/packages/loot-core/src/shared/rules.ts +++ b/packages/loot-core/src/shared/rules.ts @@ -91,13 +91,12 @@ export const FIELD_TYPES = new Map( export function isValidOp(field: keyof FieldValueTypes, op: RuleConditionOp) { const type = FIELD_TYPES.get(field); - if (!type) { - return false; - } + + if (!type) return false; + if (fieldInfo[field].disallowedOps?.has(op)) return false; + return ( - (TYPE_INFO[type].ops.includes(op) || - fieldInfo[field].internalOps?.has(op)) && - !fieldInfo[field].disallowedOps?.has(op) + TYPE_INFO[type].ops.includes(op) || fieldInfo[field].internalOps?.has(op) ); }