fix(public-api): use correct SearchTime enum values in /search/posts#3898
Merged
Conversation
The TIME_MAP in src/routes/public/search.ts was emitting DAY/WEEK/MONTH/ YEAR/ALL but the GraphQL SearchTime enum (src/schema/search.ts) is Today/LastSevenDays/LastThirtyDays/ThisYear/AllTime/Yesterday/LastMonth/ LastYear. Result: every `GET /public/v1/search/posts?time=…` returned a 500 with the GraphQL error 'Variable "$time" got invalid value "WEEK"; Value "WEEK" does not exist in "SearchTime" enum.' Confirmed via SignOz traces during the daily.dev hackathon — multiple participants hit this.
|
🍹 The Update (preview) for dailydotdev/api/prod (at ad01535) was successful. ✨ Neo ExplanationRoutine deployment of a bug fix that resolves 500 errors on `GET /public/v1/search/posts?time=…` by correcting invalid GraphQL enum values in `TIME_MAP`; all infrastructure changes are image tag bumps and migration job rotation. ✅ Low RiskThis is a standard application deployment rolling out commit Resource Changes Name Type Operation
~ vpc-native-update-tag-materialized-views-cron kubernetes:batch/v1:CronJob update
- vpc-native-api-clickhouse-migration-fc97c13f kubernetes:batch/v1:Job delete
~ vpc-native-update-achievement-rarity-cron kubernetes:batch/v1:CronJob update
~ vpc-native-sync-subscription-with-cio-cron kubernetes:batch/v1:CronJob update
~ vpc-native-materialize-monthly-best-post-archives-cron kubernetes:batch/v1:CronJob update
~ vpc-native-user-profile-analytics-clickhouse-cron kubernetes:batch/v1:CronJob update
~ vpc-native-channel-highlights-cron kubernetes:batch/v1:CronJob update
~ vpc-native-clean-expired-better-auth-sessions-cron kubernetes:batch/v1:CronJob update
~ vpc-native-clean-zombie-users-cron kubernetes:batch/v1:CronJob update
~ vpc-native-update-trending-cron kubernetes:batch/v1:CronJob update
~ vpc-native-clean-zombie-images-cron kubernetes:batch/v1:CronJob update
~ vpc-native-post-analytics-history-day-clickhouse-cron kubernetes:batch/v1:CronJob update
~ vpc-native-generate-search-invites-cron kubernetes:batch/v1:CronJob update
+ vpc-native-api-db-migration-5a0eae23 kubernetes:batch/v1:Job create
~ vpc-native-personalized-digest-deployment kubernetes:apps/v1:Deployment update
~ vpc-native-deployment kubernetes:apps/v1:Deployment update
~ vpc-native-expire-super-agent-trial-cron kubernetes:batch/v1:CronJob update
~ vpc-native-clean-stale-user-transactions-cron kubernetes:batch/v1:CronJob update
~ vpc-native-clean-gifted-plus-cron kubernetes:batch/v1:CronJob update
~ vpc-native-personalized-digest-cron kubernetes:batch/v1:CronJob update
~ vpc-native-squad-posts-analytics-refresh-cron kubernetes:batch/v1:CronJob update
~ vpc-native-clean-old-notifications-cron kubernetes:batch/v1:CronJob update
~ vpc-native-materialize-yearly-best-post-archives-cron kubernetes:batch/v1:CronJob update
~ vpc-native-channel-digests-cron kubernetes:batch/v1:CronJob update
~ vpc-native-hourly-notification-cron kubernetes:batch/v1:CronJob update
~ vpc-native-temporal-deployment kubernetes:apps/v1:Deployment update
~ vpc-native-calculate-top-readers-cron kubernetes:batch/v1:CronJob update
~ vpc-native-bg-deployment kubernetes:apps/v1:Deployment update
~ vpc-native-check-analytics-report-cron kubernetes:batch/v1:CronJob update
~ vpc-native-clean-zombie-opportunities-cron kubernetes:batch/v1:CronJob update
~ vpc-native-rotate-daily-quests-cron kubernetes:batch/v1:CronJob update
~ vpc-native-update-tags-str-cron kubernetes:batch/v1:CronJob update
~ vpc-native-clean-zombie-user-companies-cron kubernetes:batch/v1:CronJob update
~ vpc-native-clean-channel-highlights-cron kubernetes:batch/v1:CronJob update
~ vpc-native-worker-job-deployment kubernetes:apps/v1:Deployment update
~ vpc-native-update-current-streak-cron kubernetes:batch/v1:CronJob update
~ vpc-native-rotate-weekly-quests-cron kubernetes:batch/v1:CronJob update
~ vpc-native-user-posts-analytics-refresh-cron kubernetes:batch/v1:CronJob update
~ vpc-native-update-source-public-threshold-cron kubernetes:batch/v1:CronJob update
~ vpc-native-daily-digest-cron kubernetes:batch/v1:CronJob update
~ vpc-native-user-profile-updated-sync-cron kubernetes:batch/v1:CronJob update
... and 12 other changes |
- nock the mimir /v1/search call (same pattern as recommend.ts tests) - parametrized test for time=day|week|month|year|all to lock the TIME_MAP → SearchTime enum mapping - 400 on unknown time value (schema enum validation) - 401 without bearer token Without the TIME_MAP fix in this PR, the parametrized cases all return 500 (Variable "$time" got invalid value …).
The app's global setErrorHandler in src/index.ts converts all errors (including fastify schema validation errors) to 500, so the 400 expectation doesn't hold. Out of scope for this PR — the 5 parametrized time= cases still cover the fix.
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.
What
Fixes the
time=query parameter onGET /public/v1/search/posts. The route'sTIME_MAPwas emittingDAY/WEEK/MONTH/YEAR/ALLbut the GraphQLSearchTimeenum (insrc/schema/search.ts) isToday/LastSevenDays/LastThirtyDays/ThisYear/AllTime.Result: every authenticated request to
/public/v1/search/poststhat includedtime=returned a 500.Repro
GraphQL error (from SignOz logs):
Mapping
dayTodayweekLastSevenDaysmonthLastThirtyDaysyearThisYearallAllTimeThe enum has a few more values (
Yesterday,LastMonth,LastYear) that aren't exposed publicly. The 5-value public surface matches the route'squerystring.enumdefinition above.Discovery
Found while monitoring
/public/v15xx during the daily.dev hackathon. Several participants hit this route withtime=weekand got 500s. Withouttime=the endpoint works (it falls through tonull).Tests
No new tests — the existing
/search/poststest isdescribe.skip(...)because it requires mocking Mimir. This fix is a pure string mapping change; the GraphQL schema is the source of truth.