zadam / trilium

Build your personal knowledge base with Trilium Notes
GNU Affero General Public License v3.0
27.2k stars 1.9k forks source link

`ancestorDepth` is wrongly parsed as Integer on ETAPI #3510

Closed Matapii closed 1 year ago

Matapii commented 1 year ago

Trilium Version

0.57.5

What operating system are you using?

Other Linux

What is your setup?

Local + server sync

Operating System Version

Fedora 36

Description

On https://github.com/zadam/trilium/blob/master/src/etapi/notes.js#L153, ancestorDepth is assumed to be Integer when present. Further down, however, it is used as string here: https://github.com/zadam/trilium/blob/master/src/services/search/expressions/ancestor.js#L52

Thus, neither Integer nor String ancestorDepth will work on the ETAPI.

Error logs

ancestorDepth as string:

trilium_1  | ERROR: get /etapi/notes threw exception Cannot parse integer 'ancestorDepth' value 'eq1 with stacktrace: Error: Cannot parse integer 'ancestorDepth' value 'eq1
trilium_1  |     at parseInteger (/usr/src/app/src/etapi/notes.js:207:15)
trilium_1  |     at parseSearchParams (/usr/src/app/src/etapi/notes.js:153:26)
trilium_1  |     at /usr/src/app/src/etapi/notes.js:20:30
trilium_1  |     at Function.cb (/usr/src/app/src/etapi/etapi_utils.js:50:30)
trilium_1  |     at Function.sqliteTransaction (/usr/src/app/node_modules/better-sqlite3/lib/methods/transaction.js:65:24)
trilium_1  |     at Object.transactional (/usr/src/app/src/services/sql.js:236:52)
trilium_1  |     at /usr/src/app/src/etapi/etapi_utils.js:52:24
trilium_1  |     at /usr/src/app/node_modules/cls-hooked/context.js:118:13
trilium_1  |     at Namespace.run (/usr/src/app/node_modules/cls-hooked/context.js:97:5)
trilium_1  |     at Namespace.runAndReturn (/usr/src/app/node_modules/cls-hooked/context.js:117:8)

ancestorDepth as Integer:

trilium_1  | ERROR: get /etapi/notes threw exception depthCondition.substr is not a function with stacktrace: TypeError: depthCondition.substr is not a function
trilium_1  |     at AncestorExp.getComparator (/usr/src/app/src/services/search/expressions/ancestor.js:52:55)
trilium_1  |     at new AncestorExp (/usr/src/app/src/services/search/expressions/ancestor.js:14:45)
trilium_1  |     at parse (/usr/src/app/src/services/search/services/parse.js:422:85)
trilium_1  |     at parseQueryToExpression (/usr/src/app/src/services/search/services/search.js:202:24)
trilium_1  |     at Object.findResultsWithQuery (/usr/src/app/src/services/search/services/search.js:241:24)
trilium_1  |     at /usr/src/app/src/etapi/notes.js:23:45
trilium_1  |     at Function.cb (/usr/src/app/src/etapi/etapi_utils.js:50:30)
trilium_1  |     at Function.sqliteTransaction (/usr/src/app/node_modules/better-sqlite3/lib/methods/transaction.js:65:24)
trilium_1  |     at Object.transactional (/usr/src/app/src/services/sql.js:236:52)
trilium_1  |     at /usr/src/app/src/etapi/etapi_utils.js:52:24
zadam commented 1 year ago

Thanks for reporting, fixed.