Repository navigation
Conversation
An application (context) gets a menu of items that each open a view, a table or a link. Items are loaded with the context in one chunked query, and an item whose view or table no longer exists is reported as broken, computed in SQL. Deleting an application deletes its menu. - a menu item's technical name is unique within its application, kept so by a unique index on (context_id, technical_name) - the item target type is typed as view, table or url in the API - the mapper groups the joined context rows in one place instead of three Co-authored-by: Ruben van der Linde <ruben@conduction.nl> Assisted-by: ClaudeCode:claude-opus-5-5 Signed-off-by: Remko <remko@conduction.nl>
…nu items - MenuItemMapperTest runs against a real database: items pointing at a deleted view or table come back broken and links never do, items are ordered and grouped per application, and ContextMapper::findById() and findAll() carry the menu - MenuItemTest serializes each of the three target types - technicalName is a string in the entity and the API: the column is not null Assisted-by: ClaudeCode:claude-opus-5-5 Signed-off-by: Remko <remko@conduction.nl>
remko48
added this pull request to stack #3090
October 13, 2026 14:39
remko48
force-pushed
the
feat/noid/menu-model
branch
from
October 14, 2026 07:16
49a3011 to
3369be5
Compare
remko48
force-pushed
the
feat/noid/menu-model
branch
from
October 14, 2026 09:00
3369be5 to
ecba0ec
Compare
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.
Applications (contexts) get a menu: an ordered list of items that each open a view, a table or a web link. This PR adds the data model and returns the menu with the application; saving it comes in the next PR.
What changes
tables_contexts_menu_item(label, icon, target type + id or url, technical name, order). Every item has a technical name, unique within one application, enforced by a unique index.MenuItementity +MenuItemMapper: the menus of all requested applications are loaded in one query (chunked for Oracle), not one per application.broken: true, worked out in the same query, so the UI can show it and the owner can fix it.ContextMapper: the three copies of the "group joined rows per context" code are replaced by oneformatResultSet(). The navigation bar query skips loading menus, since it doesn't show them; theremenuItemsis always empty.menuItemsis added to the context response (OpenAPI and TS types regenerated).🖼️ Screenshots
Backend only, no UI changes.
🏁 Checklist
/backport to stableX.X🤖 AI (if applicable)