Skip to content

fix(notion_search): map legacy 'database' filter to 'data_source'#163

Merged
BrunooMoniz merged 1 commit into
mainfrom
fix/notion-search-data-source
Jun 20, 2026
Merged

fix(notion_search): map legacy 'database' filter to 'data_source'#163
BrunooMoniz merged 1 commit into
mainfrom
fix/notion-search-data-source

Conversation

@BrunooMoniz

Copy link
Copy Markdown
Owner

ENG-1

A tool notion_search enviava filter.value='database' direto pra client.search. A API do Notion (versão 2025-09-03) rejeita esse valor:

validation_error: body.filter.value should be 'page' or 'data_source', instead was 'database'

Erro recorrente nos logs de prod ([notion_search] workspace=nora code=validation_error).

Fix

  • Enum do filtro passa a aceitar page, data_source e o legado database.
  • normalizeSearchFilter mapeia database -> data_source antes de chamar a API.
  • Helper isolado em src/notion-search-filter.ts (sem side-effect) pra ficar testável.
  • Nota: o SDK @notionhq/client@2.3.0 ainda tipa value como 'page'|'database' (o tipo do SDK está atrás da API); a chamada leva um cast pro valor runtime-correto.

Aceite

  • src/__tests__/notion-search-filter.test.ts (6 casos) cobre o enum e o mapeamento.
  • npm run build limpo, npm test = 1477 pass / 0 fail.
  • Pós-deploy: o validation_error de database some dos logs.

🤖 Generated with Claude Code

A tool notion_search enviava filter.value='database' direto pra
client.search. A API do Notion (versão 2025-09-03, multi-source databases)
rejeita esse valor: `validation_error: body.filter.value should be 'page'
or 'data_source', instead was 'database'` — erro recorrente nos logs de
prod (ex.: workspace=nora).

Fix: o enum do filtro aceita 'page', 'data_source' e o legado 'database'
(o que os agentes aprenderam a mandar), e normalizeSearchFilter mapeia
'database' -> 'data_source' antes de chamar a API. O helper vive num módulo
próprio sem side-effect (src/notion-search-filter.ts) pra ficar testável
sem os tokens Notion que clients.ts exige no load.

Obs: o SDK @notionhq/client 2.3.0 ainda tipa value como 'page'|'database'
(o tipo do SDK está atrás da API — essa defasagem É o bug), então a chamada
leva um cast pro valor runtime-correto.

Teste: src/__tests__/notion-search-filter.test.ts cobre o enum e o
mapeamento. Build + 1477 testes verdes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@BrunooMoniz BrunooMoniz merged commit 76e8012 into main Jun 20, 2026
3 of 4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant