Summary
Implement per-request DataLoader batching for GraphQL resolvers per doc 07 §17.3. For the post → author → comments shape, GraphQL resolvers use dataloader to batch and cache N+1 queries. REST endpoints get explicit IN (...) batch fetches in code (code review rejects N+1). Add an integration test harness with pg_stat_statements to enforce a "query count budget" per endpoint (e.g., /blog/[slug] <= 4 queries) — CI fails on breach.
Design reference
- docs/07-media-performance.md §17.3
Acceptance criteria
Dependencies
none
Complexity
M
Summary
Implement per-request DataLoader batching for GraphQL resolvers per doc 07 §17.3. For the post → author → comments shape, GraphQL resolvers use
dataloaderto batch and cache N+1 queries. REST endpoints get explicitIN (...)batch fetches in code (code review rejects N+1). Add an integration test harness withpg_stat_statementsto enforce a "query count budget" per endpoint (e.g.,/blog/[slug]<= 4 queries) — CI fails on breach.Design reference
Acceptance criteria
dataloaderintegrated into GraphQL request context (dataloader.New(req, ...))userLoader,commentLoader,termLoader,mediaLoaderuseWHERE id = ANY($1)queriespg_stat_statementsrecords query count per endpoint/blog/[slug]<= 4 queries;/blogindex <= 6 queries;/category/[slug]<= 5 queriesDependencies
none
Complexity
M