SEP-1625: Server-side sort/search for proxied inventory list endpoints + SchemaListView manual sort/filter - #1331
Open
peter-o-addo wants to merge 17 commits into
Open
SEP-1625: Server-side sort/search for proxied inventory list endpoints + SchemaListView manual sort/filter#1331peter-o-addo wants to merge 17 commits into
peter-o-addo wants to merge 17 commits into
Conversation
Contributor
Author
Schema capability flagsGET /api/apps/inventory/schema{
"name": "inventory",
"entities": [
{ "name": "nodes", "server_side_query": true, "default_sort": "-created_at" },
{ "name": "services", "server_side_query": true, "default_sort": "-name" },
{ "name": "schemas", "server_side_query": true, "default_sort": "-created_at" },
{ "name": "tables", "server_side_query": true, "default_sort": "-created_at" }
]
}Page totals (
|
peter-o-addo
marked this pull request as ready for review
August 11, 2026 14:41
peter-o-addo
requested review from
a team,
marcuscruz-percona,
maxbube and
yyyyyyyan
as code owners
August 11, 2026 14:41
Contributor
There was a problem hiding this comment.
Pull request overview
This PR extends SEP’s Inventory app experience to support whole-result-set sorting and searching on list pages by proxying validated sort/search parameters through SEP to the Inventory sub-app, and adds a schema capability flag (server_side_query) so the React SchemaListView only enables manual (server-driven) sort/filter when an endpoint opts in.
Changes:
- Add per-entity list-query specs + request-boundary validation for the SEP Inventory proxy, and forward validated
sort/searchupstream while preserving filtered totals. - Introduce
ListView.server_side_query(schema + OpenAPI + TS types) and gate FE manual sort/search on this capability (and server pagination). - Expand Inventory sub-app sortable allowlists for schemas/tables to include parent FK sort keys, with tests + snapshot refreshes.
Reviewed changes
Copilot reviewed 44 out of 46 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| tests/app/sep/snapshots/schema/inventory.json | Snapshot updates for server_side_query on inventory list views. |
| tests/app/sep/snapshots/openapi/tasks.json | OpenAPI snapshot updated for framework__ListView.server_side_query. |
| tests/app/sep/snapshots/openapi/snippets.json | OpenAPI snapshot updated for framework__ListView.server_side_query. |
| tests/app/sep/snapshots/openapi/mysql_backups.json | OpenAPI snapshot updated for framework__ListView.server_side_query. |
| tests/app/sep/snapshots/openapi/mysql_backups__restore.json | OpenAPI snapshot updated for framework__ListView.server_side_query. |
| tests/app/sep/snapshots/openapi/inventory.json | OpenAPI snapshot updated for proxy sort/search params + server_side_query. |
| tests/app/sep/snapshots/openapi/dipper.json | OpenAPI snapshot updated for framework__ListView.server_side_query. |
| tests/app/sep/snapshots/openapi/checksums.json | OpenAPI snapshot updated for framework__ListView.server_side_query. |
| tests/app/sep/snapshots/openapi/backup_pg.json | OpenAPI snapshot updated for framework__ListView.server_side_query. |
| tests/app/sep/snapshots/openapi/backup_mongo.json | OpenAPI snapshot updated for framework__ListView.server_side_query. |
| tests/app/sep/snapshots/openapi/backup_mongo__restore.json | OpenAPI snapshot updated for framework__ListView.server_side_query. |
| tests/app/sep/snapshots/openapi/atw.json | OpenAPI snapshot updated for framework__ListView.server_side_query. |
| tests/app/sep/snapshots/openapi/archives.json | OpenAPI snapshot updated for framework__ListView.server_side_query. |
| tests/app/sep/snapshots/openapi/alters.json | OpenAPI snapshot updated for framework__ListView.server_side_query. |
| tests/app/sep/snapshots/openapi/alert_troubleshooting.json | OpenAPI snapshot updated for framework__ListView.server_side_query. |
| tests/app/sep/apps/inventory/test_schema.py | Assert inventory list views opt into server_side_query. |
| tests/app/sep/apps/inventory/test_list_query.py | Unit tests for inventory proxy list-query dependency + upstream param mapping. |
| tests/app/sep/apps/inventory/test_api_routes.py | Proxy route tests for forwarding sort/search + preserving upstream filtered totals. |
| tests/app/sep/apps/framework/test_schema.py | Tests for ListView.server_side_query default/serialization behavior. |
| tests/app/sep/apps/framework/test_list_query.py | Tests for the new public list-query builder helper. |
| tests/app/inventory/test_crud.py | Assert Inventory sub-app allowlists include service_id/schema_id sorting. |
| tests/app/inventory/routes/test_tables.py | Inventory /tables/ route test for sorting by schema_id. |
| tests/app/inventory/routes/test_schemas.py | Inventory /schemas/ route test for sorting by service_id. |
| frontend/packages/framework/src/index.ts | Re-export new SchemaListServerQuery type. |
| frontend/packages/framework/src/components/SchemaListView/SchemaListView.tsx | Add server-driven sort/search plumbing gated by server_side_query + pagination. |
| frontend/packages/framework/src/components/SchemaListView/SchemaListView.test.tsx | Tests for capability gating + callbacks for server sort/search. |
| frontend/packages/framework/src/components/SchemaListView/index.ts | Re-export new SchemaListServerQuery type. |
| frontend/packages/framework/src/components/SchemaDrivenApp/AppListPage.tsx | Thread server-side sort/search state into list fetch + reset offset on changes. |
| frontend/packages/framework/src/components/SchemaDrivenApp/AppListPage.test.tsx | Tests for default sort seeding + offset reset + capability-off behavior. |
| frontend/packages/apps/tasks/src/TasksListPage.test.tsx | Regression test: tasks list remains client-side (no serverQuery). |
| frontend/packages/apps/inventory/src/TargetHostsPage.test.tsx | Regression test: no server search box without pagination/capability. |
| frontend/packages/apps/inventory/src/InventoryApp.test.tsx | Regression test: nested lists remain client-side even if list view opts in. |
| frontend/packages/api/tests/useAppTasks.test.ts | Tests for forwarding/omitting sort/search params. |
| frontend/packages/api/src/types/app-schema.ts | Add server_side_query to ListView type. |
| frontend/packages/api/src/hooks/useAppTasks.ts | Add sort/search options, include in query keys, and emit request params safely. |
| frontend/packages/api/src/generated/sep.ts | Regenerated types for SEP OpenAPI changes (server_side_query + sort/search params). |
| frontend/packages/api/src/generated/inventory.ts | Regenerated types for Inventory OpenAPI allowlist expansion. |
| frontend/packages/api/specs/sep.json | Updated stored SEP spec snapshot. |
| frontend/packages/api/specs/inventory.json | Updated stored Inventory spec snapshot. |
| changelog.d/SEP-1625.added.md | Changelog entry for server-side sort/search on inventory list pages. |
| app/sep/apps/inventory/schema.py | Enable server_side_query on inventory list views. |
| app/sep/apps/inventory/list_query.py | New per-entity list-query specs + validation + upstream param adapter. |
| app/sep/apps/inventory/api_routes.py | Wire validated list-query into upstream proxy call and preserve totals. |
| app/sep/apps/framework/schema.py | Add server_side_query field to ListView schema model + docs. |
| app/sep/apps/framework/list_query.py | Export a public build_in_memory_list_query helper for non-dep call sites. |
| app/inventory/crud.py | Extend schema/table sortable allowlists to include parent FK IDs. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| return build_in_memory_list_query(spec, sort or spec.default_sort, search) | ||
|
|
||
|
|
||
| InventoryListQueryDep = Annotated[InMemoryListQuery, Depends(inventory_list_query)] |
Coverage reportClick to see where and how coverage changed
This report was generated by python-coverage-comment-action |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Add server-side sort/search for proxied inventory list endpoints and gate SchemaListView manual sorting/filtering on an opt-in capability.
app/inventory/crud.py: allowservice_id/schema_idon schema and table sort allowlistsapp/sep/apps/framework/list_query.py,app/sep/apps/inventory/list_query.py: public in-memory list-query builder, per-entity specs, request dep, and upstream sort/search adapterapp/sep/apps/inventory/api_routes.py: wire validated list-query params into the inventory proxy and keep filtered totals from upstreamapp/sep/apps/framework/schema.py,app/sep/apps/inventory/schema.py,frontend/packages/api/src/types/app-schema.ts: addserver_side_queryand enable it on the four inventory list viewsfrontend/packages/api/src/hooks/useAppTasks.ts: threadsort/searchthrough list fetch options and query keysfrontend/packages/framework/.../SchemaListView.tsx,AppListPage.tsx: drive manual sort/search from server params when pagination + capability are on; reset offset on changechangelog.d/SEP-1625.added.md: refresh specs and document the user-facing changeTested
Checklist
make test)make run-pre-commit)make makemigrations)changelog.d/if the change is user-facing (make changelog-add), or confirmed N/A (internal-only change, or a same-release-cycle fix for an unreleased sibling ticket)