feat(#66): implement tag filtering in search API endpoint

Add support for filtering search results by tags in the main search endpoint.

Changes:
- Add tags parameter to SearchQueryDto (comma-separated tag slugs)
- Implement tag filtering in SearchService.search() method
- Update SQL query to join with knowledge_entry_tags when tags provided
- Entries must have ALL specified tags (AND logic)
- Add tests for tag filtering (2 controller tests, 2 service tests)
- Update endpoint documentation
- Fix non-null assertion linting error

The search endpoint now supports:
- Full-text search with ranking (ts_rank)
- Snippet generation with highlighting (ts_headline)
- Status filtering
- Tag filtering (new)
- Pagination

Example: GET /api/knowledge/search?q=api&tags=documentation,tutorial

All tests pass (25 total), type checking passes, linting passes.

Fixes #66

Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
This commit is contained in:
Jason Woltje
2026-02-02 14:33:31 -06:00
co-authored by Claude Sonnet 4.5
parent 24d59e7595
commit c3500783d1
121 changed files with 4123 additions and 58 deletions
+3
View File
@@ -308,6 +308,9 @@ importers:
'@types/node':
specifier: ^22.13.4
version: 22.19.7
'@vitest/coverage-v8':
specifier: ^4.0.18
version: 4.0.18([email protected](@opentelemetry/[email protected])(@types/[email protected])([email protected])([email protected])([email protected])([email protected])([email protected]))
ts-node:
specifier: ^10.9.2
version: 10.9.2(@swc/[email protected])(@types/[email protected])([email protected])