Add username tracking to query events and history#31
Open
Add username tracking to query events and history#31
Conversation
Adds username to the QuerySummary entity so the user who submitted a query is persisted to the history database. The username is extracted from the JWT via VyneUser.username, which works for both UI sessions (logged-in user) and saved endpoint invocations (JWT-identified user). Unauthenticated mode is handled gracefully by leaving username null. Changes: - Add username field to QueryStartEvent and propagate through captureQueryStart - Add username field to QuerySummary JPA entity (column: username) - Update QueryLifecycleEventObserver to carry username and pass it to captureQueryStart - Update QueryService to pass vyneUser?.username at both the normal path (via QueryLifecycleEventObserver) and the compilation-exception path - Update PersistingQueryEventConsumer and ShutdownDecorator captureQueryStart overrides - Update QueryResultEventMapper to map username from QueryStartEvent to QuerySummary - Add Flyway migration V20260224 to add nullable username VARCHAR(255) column https://claude.ai/code/session_01K9g4NeErui15PAMCfuzno4
Unit tests in QueryLifecycleEventObserverTest verify that username is forwarded to QueryStartEvent (with and without auth). Integration tests in QuerySummaryOnlyPersistenceTest verify end-to-end that the username from a JWT preferred_username claim is persisted to the QUERY_SUMMARY table, and is null when the query is submitted unauthenticated. Uses the existing JWSBuilder/RsaJwk infrastructure already present in BaseQueryServiceTest, with a local helper that sets preferred_username for a predictable assertion target. https://claude.ai/code/session_01K9g4NeErui15PAMCfuzno4
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
This change adds username tracking to query events and persists it throughout the query lifecycle and history records. The username is now captured when a query starts and stored in the query history database.
Key Changes
usernameparameter tocaptureQueryStart()methodusernamefield to capture the user who initiated the queryvyneUserand passes it when creating query events and observersusernamecolumn to persist username in query historyV20260224__add_username_to_query_summary.sqlto create the username columnImplementation Details
vyneUser?.usernameproperty in QueryServicehttps://claude.ai/code/session_01K9g4NeErui15PAMCfuzno4