Add dynamic search rules API support#982
Conversation
Implement list, get, upsert (PATCH), and delete endpoints for the experimental dynamic search rules feature introduced in Meilisearch v1.50.0, plus integration tests and code samples.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
📝 WalkthroughWalkthroughDynamic Search Rules support is added to the Java SDK through serializable models, client and HTTP handler methods, integration tests, and documentation examples for listing, retrieval, upsert, and deletion. ChangesDynamic Search Rules
Estimated code review effort: 3 (Moderate) | ~20 minutes Sequence Diagram(s)sequenceDiagram
participant Client
participant DynamicSearchRulesHandler
participant MeilisearchAPI
Client->>DynamicSearchRulesHandler: listDynamicSearchRules(query)
DynamicSearchRulesHandler->>MeilisearchAPI: POST /dynamic-search-rules
MeilisearchAPI-->>DynamicSearchRulesHandler: Results<DynamicSearchRule>
Client->>DynamicSearchRulesHandler: updateDynamicSearchRule(uid, rule)
DynamicSearchRulesHandler->>MeilisearchAPI: PATCH /dynamic-search-rules/{uid}
MeilisearchAPI-->>DynamicSearchRulesHandler: TaskInfo
Client->>DynamicSearchRulesHandler: deleteDynamicSearchRule(uid)
DynamicSearchRulesHandler->>MeilisearchAPI: DELETE /dynamic-search-rules/{uid}
MeilisearchAPI-->>DynamicSearchRulesHandler: TaskInfo
Possibly related issues
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
src/main/java/com/meilisearch/sdk/Client.java (1)
636-639: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low valueProvide a parameterless overload for convenience.
Other listing methods in
Client(such asgetIndexes()andgetTasks()) provide an overloaded parameterless method that executes the request using default pagination parameters. Consider adding a similar overload here for consistency and developer convenience.♻️ Proposed refactor
public Results<DynamicSearchRule> listDynamicSearchRules(DynamicSearchRulesQuery query) throws MeilisearchException { return this.dynamicSearchRulesHandler.listDynamicSearchRules(query); } + + /** + * Get a list of all dynamic search rules using default pagination parameters. + * + * `@return` Results containing a list of DynamicSearchRule instances. + * `@throws` MeilisearchException If an error occurs. + */ + public Results<DynamicSearchRule> listDynamicSearchRules() throws MeilisearchException { + return this.dynamicSearchRulesHandler.listDynamicSearchRules(new DynamicSearchRulesQuery()); + }🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/main/java/com/meilisearch/sdk/Client.java` around lines 636 - 639, Add a parameterless listDynamicSearchRules() overload to Client alongside the existing query-based method. Have it delegate to listDynamicSearchRules with the established default pagination/query parameters, matching the pattern used by getIndexes() and getTasks().
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/main/java/com/meilisearch/sdk/model/DynamicSearchRule.java`:
- Around line 23-36: Add a Jackson-compatible no-argument constructor to
DynamicSearchRule, preserving the existing all-arguments constructor and field
assignments. Ensure Jackson can instantiate the class from API JSON without
relying on parameter-name modules or setters.
---
Nitpick comments:
In `@src/main/java/com/meilisearch/sdk/Client.java`:
- Around line 636-639: Add a parameterless listDynamicSearchRules() overload to
Client alongside the existing query-based method. Have it delegate to
listDynamicSearchRules with the established default pagination/query parameters,
matching the pattern used by getIndexes() and getTasks().
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: ae97d2ff-57f5-4b02-bb2a-fe5ec1e92cdc
📒 Files selected for processing (6)
.code-samples.meilisearch.yamlsrc/main/java/com/meilisearch/sdk/Client.javasrc/main/java/com/meilisearch/sdk/DynamicSearchRulesHandler.javasrc/main/java/com/meilisearch/sdk/model/DynamicSearchRule.javasrc/main/java/com/meilisearch/sdk/model/DynamicSearchRulesQuery.javasrc/test/java/com/meilisearch/integration/DynamicSearchRulesTest.java
Strift
left a comment
There was a problem hiding this comment.
Hey, thanks for your PR!
The CI is not passing. I suggest running linter + formatter + tests locally before requesting another review 🙏

Related issue
Fixes #981
What does this PR do?
client.listDynamicSearchRules(query)—POST /dynamic-search-rules(list, with pagination/filtering viaDynamicSearchRulesQuery)client.getDynamicSearchRule(uid)—GET /dynamic-search-rules/{uid}client.updateDynamicSearchRule(uid, rule)—PATCH /dynamic-search-rules/{uid}(upsert, returnsTaskInfo)client.deleteDynamicSearchRule(uid)—DELETE /dynamic-search-rules/{uid}(returnsTaskInfo)DynamicSearchRuleandDynamicSearchRulesQueryDynamicSearchRulesTest, covering list, get, upsert (create + update), delete, and enabling thedynamicSearchRulesexperimental feature flag in test setup.code-samples.meilisearch.yaml:list_dynamic_search_rules_1,get_dynamic_search_rule_1,patch_dynamic_search_rule_1,delete_dynamic_search_rule_1, matching the equivalent samples in the documentation repoNote: this is an experimental feature and I wasn't able to run the full integration test suite locally against a v1.50.0 instance — happy to address anything CI or review turns up.
PR checklist
Please check if your PR fulfills the following requirements:
WebHooksHandler/WebhooksTest. I reviewed and wrote all the code myself in github.dev.Thank you so much for contributing to Meilisearch!
Summary by CodeRabbit