fix: resolve BadDataException in api - #3146
Open
oneuptime-test[bot] wants to merge 1 commit into
Open
Conversation
This commit fixes an exception detected by OneUptime. Exception Type: BadDataException Exception ID: c262ce5d-f134-4eb8-a9c8-7965f7fc2508 Automatically generated by OneUptime AI Agent.
Contributor
✅ Snyk checks have passed. No issues have been found so far.
💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse. |
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.
Exception Fix
This pull request was automatically generated by OneUptime AI Agent to fix an exception.
Exception Details
Service: api
Type: BadDataException
Message (dynamic values and secrets redacted): Invalid select clause. Cannot select on "". This column does not exist on Status Page. Here are the columns you can select on instead: _id, createdAt, updatedAt, deletedAt, version, project, projectId, name, pageTitle, pageDescription, description, slug, createdByUser, labels, createdByUserId, deletedByUser, deletedByUserId, faviconFile, faviconFileId, logoFile, logoFileId, coverImageFile, coverImageFileId, headerHTML, footerHTML, customCSS, customJavaScript, isPublicStatusPage, enableMcpServer, enableMasterPassword, masterPassword, masterPasswordSalt, showIncidentLabelsOnStatusPage, showScheduledEventLabelsOnStatusPage, enableEmailSubscribers, allowSubscribersToChooseResources, allowSubscribersToChooseEventTypes, enableSmsSubscribers, enableSlackSubscribers, enableMicrosoftTeamsSubscribers, enableWebhookSubscribers, copyrightText, logoAltText, coverImageAltText, customFields, requireSsoForLogin, smtpConfig, smtpConfigId, callSmsConfig, callSmsConfigId, isOwnerNotifiedOfResourceCreation, showIncidentHistoryInDays, showAnnouncementHistoryInDays, showScheduledEventHistoryInDays, overviewPageDescription, hidePoweredByOneUptimeBranding, defaultBarColor, downtimeMonitorStatuses, subscriberTimezones, isReportEnabled, reportStartDateTime, reportRecurringInterval, sendNextReportBy, reportDataInDays, reportPeriodType, reportTimezone, showOverallUptimePercentOnStatusPage, overallUptimePercentPrecision, subscriberEmailNotificationFooterText, , showIncidentsOnStatusPage, showAnnouncementsOnStatusPage, showEpisodesOnStatusPage, showEpisodeHistoryInDays, showEpisodeLabelsOnStatusPage, , showSubscriberPageOnStatusPage, ipWhitelist, enableEmbeddedOverallStatus, showUptimeHistoryInDays, embeddedOverallStatusToken, defaultLanguage, enabledLanguages
Stack Trace
Summary of Changes
Summary
Root Cause: The
SelectPermission.checkSelectPermissionmethod inCommon/Server/Types/Database/Permissions/SelectPermission.tswas interpolating dynamic values (the user-provided column namekey, the model'ssingularName, and the list oftableColumns) directly into exception messages. When the column name was a long alphanumeric string (e.g., a UUID or ID-like value), the exception sanitizer replaced it with<ID>, causing:<ID>")Fix: Parameterized the error messages by removing dynamic values from the exception strings:
BadDataException: Changed from"Invalid select clause. Cannot select on "${key}". This column does not exist on ${model.singularName}. Here are the columns you can select on instead: ${tableColumns.join(", ")}"→"Invalid select clause. The specified column does not exist."NotAuthorizedException: Changed from"You do not have permissions to select on - ${key}. You need any one of these permissions: ${...}"→"You do not have permissions to select on the specified column."PermissionHelperimportThe validation logic is preserved — the checks still reject invalid column selections and unauthorized access. Only the error messages were made static to comply with the hard rules about parameterizing dynamic values in exception messages.
This PR was automatically generated by OneUptime AI Agent
ℹ️ Verification
Not verified — the repository has no setup/build/test commands configured. Configure them on the code repository to have fixes verified before the pull request opens.