-
Notifications
You must be signed in to change notification settings - Fork 111
feat: flexible social links - Phase 1 backend implementation #3404
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Conversation
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
Add new socialLinks JSONB array column to store social media links
as [{platform, url}] entries. Array structure preserves order for
future drag-and-drop reordering.
Note: Database migration to add the column needs to be created separately.
Add GraphQL types for flexible social links: - UserSocialLink type with platform and url fields - UserSocialLinkInput input type for mutations - socialLinks field on User type returning array of social links
Add URL-based platform detection and Zod validation schemas: - detectPlatformFromUrl() auto-detects platform from URL hostname - PLATFORM_DOMAINS mapping for all supported platforms - socialLinksInputSchema with auto-detection transformation - Falls back to 'other' for unknown platforms
Update updateUserProfile and updateUserInfo mutations to support socialLinks input with dual-write capability: - Add socialLinks to GraphQL mutation inputs - Implement processSocialLinksForDualWrite helper function - Extract handles from URLs for legacy column compatibility - Write to both socialLinks JSONB array and old individual columns
Mark all 13 individual social media fields as deprecated on: - User type - UpdateUserInput input type - UpdateUserInfoInput input type All deprecation messages point to the new socialLinks field.
|
🍹 The Update (preview) for dailydotdev/api/prod (at dd3e37d) was successful. Resource Changes Name Type Operation
~ vpc-native-generate-search-invites-cron kubernetes:batch/v1:CronJob update
~ vpc-native-personalized-digest-cron kubernetes:batch/v1:CronJob update
~ vpc-native-clean-stale-user-transactions-cron kubernetes:batch/v1:CronJob update
~ vpc-native-clean-zombie-images-cron kubernetes:batch/v1:CronJob update
~ vpc-native-ws-deployment kubernetes:apps/v1:Deployment update
~ vpc-native-clean-gifted-plus-cron kubernetes:batch/v1:CronJob update
- vpc-native-api-db-migration-b116f366 kubernetes:batch/v1:Job delete
~ vpc-native-clean-zombie-users-cron kubernetes:batch/v1:CronJob update
~ vpc-native-sync-subscription-with-cio-cron kubernetes:batch/v1:CronJob update
~ vpc-native-update-source-tag-view-cron kubernetes:batch/v1:CronJob update
~ vpc-native-hourly-notification-cron kubernetes:batch/v1:CronJob update
~ vpc-native-update-views-cron kubernetes:batch/v1:CronJob update
~ vpc-native-temporal-deployment kubernetes:apps/v1:Deployment update
~ vpc-native-update-current-streak-cron kubernetes:batch/v1:CronJob update
+ vpc-native-api-clickhouse-migration-5be5ca69 kubernetes:batch/v1:Job create
~ vpc-native-update-trending-cron kubernetes:batch/v1:CronJob update
~ vpc-native-update-tags-str-cron kubernetes:batch/v1:CronJob update
~ vpc-native-post-analytics-history-day-clickhouse-cron kubernetes:batch/v1:CronJob update
~ vpc-native-update-source-public-threshold-cron kubernetes:batch/v1:CronJob update
~ vpc-native-deployment kubernetes:apps/v1:Deployment update
~ vpc-native-update-highlighted-views-cron kubernetes:batch/v1:CronJob update
~ vpc-native-daily-digest-cron kubernetes:batch/v1:CronJob update
~ vpc-native-clean-zombie-opportunities-cron kubernetes:batch/v1:CronJob update
~ vpc-native-update-tag-recommendations-cron kubernetes:batch/v1:CronJob update
~ vpc-native-generic-referral-reminder-cron kubernetes:batch/v1:CronJob update
~ vpc-native-clean-zombie-user-companies-cron kubernetes:batch/v1:CronJob update
- vpc-native-api-clickhouse-migration-b116f366 kubernetes:batch/v1:Job delete
~ vpc-native-user-profile-updated-sync-cron kubernetes:batch/v1:CronJob update
~ vpc-native-check-analytics-report-cron kubernetes:batch/v1:CronJob update
~ vpc-native-bg-deployment kubernetes:apps/v1:Deployment update
~ vpc-native-post-analytics-clickhouse-cron kubernetes:batch/v1:CronJob update
~ vpc-native-personalized-digest-deployment kubernetes:apps/v1:Deployment update
~ vpc-native-private-deployment kubernetes:apps/v1:Deployment update
+ vpc-native-api-db-migration-5be5ca69 kubernetes:batch/v1:Job create
~ vpc-native-calculate-top-readers-cron kubernetes:batch/v1:CronJob update
~ vpc-native-validate-active-users-cron kubernetes:batch/v1:CronJob update
|
Note: This migration was auto-generated and may include unrelated schema drift. Review before deploying.
- Remove schema drift from auto-generated migration - Add note in AGENTS.md about reviewing migrations for schema drift
…ility The function never returns undefined, so the return type should be string | null, not string | null | undefined.
Add unit tests for detectPlatformFromUrl and socialLinksInputSchema, plus integration tests for updateUserProfile mutation with socialLinks.
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
Phase 1 implementation of the flexible social media links refactor. This replaces 13 individual social columns with a flexible JSONB array structure while maintaining backwards compatibility through dual-write.
Changes
socialLinksJSONB array column to User entityUserSocialLinkGraphQL type andsocialLinksfield on UserdetectPlatformFromUrl) and Zod validation schemasKey Features
Migration Note
A database migration is needed to add the
socialLinkscolumn:Test plan
socialLinksfield and deprecated individual fieldssocialLinksinput - verify dual-write to both JSONB and legacy columns