Skip to content

chore: upgrade prisma to 7.8#359

Merged
Producdevity merged 17 commits into
stagingfrom
chore/update-prisma
May 21, 2026
Merged

chore: upgrade prisma to 7.8#359
Producdevity merged 17 commits into
stagingfrom
chore/update-prisma

Conversation

@Producdevity

Copy link
Copy Markdown
Owner

Description

upgrade prisma to 7.8

Type of change

  • Bug fix
  • New feature
  • Breaking change
  • Documentation update
  • Refactor
  • Other (please describe): updating package

How Has This Been Tested?

  • Local build
  • Lint
  • Typecheck
  • Unit tests
  • Manual testing

Checklist

  • My code follows the style guidelines of this project
  • I have performed a self-review of my code
  • I have made corresponding changes to the documentation
  • I have checked that all checks (lint, typecheck, test) pass

@vercel

vercel Bot commented May 21, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
emuready Ready Ready Preview, Comment May 21, 2026 3:09pm

Request Review

@coderabbitai

coderabbitai Bot commented May 21, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 177 files, which is 27 over the limit of 150.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 5dd697b1-665e-4a32-9112-1d0fcbeca63f

📥 Commits

Reviewing files that changed from the base of the PR and between 797b154 and 98b4f96.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (177)
  • package.json
  • playwright.config.ts
  • prisma.config.ts
  • prisma/schema.prisma
  • prisma/seed-permissions.ts
  • prisma/seed.ts
  • prisma/seeders/azaharCustomFieldsSeeder.ts
  • prisma/seeders/clearTestDataSeeder.ts
  • prisma/seeders/cpuSeeder.ts
  • prisma/seeders/customFieldTemplatesSeeder.ts
  • prisma/seeders/devicesSeeder.ts
  • prisma/seeders/edenCustomFieldsSeeder.ts
  • prisma/seeders/emulatorsSeeder.ts
  • prisma/seeders/gamenativeCustomFieldsSeeder.ts
  • prisma/seeders/gamesSeeder.ts
  • prisma/seeders/gpuSeeder.ts
  • prisma/seeders/listingsSeeder.ts
  • prisma/seeders/performanceScalesSeeder.ts
  • prisma/seeders/permissionsSeeder.ts
  • prisma/seeders/socSeeder.ts
  • prisma/seeders/systemsSeeder.ts
  • prisma/seeders/userModerationFixturesSeeder.ts
  • prisma/seeders/usersSeeder.ts
  • prisma/tsconfig.json
  • public/service-worker.js
  • public/sw-register.js
  • scripts/deploy-manually.ts
  • scripts/migrate-normalized-titles.ts
  • scripts/sync-version.js
  • src/app/admin/data.server.ts
  • src/app/admin/data.ts
  • src/app/admin/page.tsx
  • src/components/comments/GenericCommentForm.tsx
  • src/components/ui/TrustLevelBadge.test.tsx
  • src/components/ui/TrustLevelBadge.tsx
  • src/lib/trust/config.ts
  • src/lib/trust/service.ts
  • src/server/api/mobileContext.ts
  • src/server/api/routers/admin/activity.ts
  • src/server/api/routers/admin/entitlements.ts
  • src/server/api/routers/admin/releases.ts
  • src/server/api/routers/admin/titleIdTools.ts
  • src/server/api/routers/apiKeys.ts
  • src/server/api/routers/badges.ts
  • src/server/api/routers/cache.ts
  • src/server/api/routers/customFieldCategories.ts
  • src/server/api/routers/customFieldDefinitions.ts
  • src/server/api/routers/customFieldTemplates.ts
  • src/server/api/routers/emulators.ts
  • src/server/api/routers/entitlements.ts
  • src/server/api/routers/games.ts
  • src/server/api/routers/igdb.ts
  • src/server/api/routers/listingReports.ts
  • src/server/api/routers/listingVerifications.ts
  • src/server/api/routers/listings/admin.test.ts
  • src/server/api/routers/listings/admin.ts
  • src/server/api/routers/listings/comments.test.ts
  • src/server/api/routers/listings/comments.ts
  • src/server/api/routers/listings/core.test.ts
  • src/server/api/routers/listings/core.ts
  • src/server/api/routers/listings/validation.ts
  • src/server/api/routers/mobile/admin.ts
  • src/server/api/routers/mobile/deviceBrands.ts
  • src/server/api/routers/mobile/general.ts
  • src/server/api/routers/mobile/listings.test.ts
  • src/server/api/routers/mobile/listings.ts
  • src/server/api/routers/mobile/notifications.ts
  • src/server/api/routers/mobile/pcListings.ts
  • src/server/api/routers/mobile/socs.ts
  • src/server/api/routers/mobile/users.ts
  • src/server/api/routers/notifications.ts
  • src/server/api/routers/pcListings.test.ts
  • src/server/api/routers/pcListings.ts
  • src/server/api/routers/permissions.ts
  • src/server/api/routers/trust.test.ts
  • src/server/api/routers/trust.ts
  • src/server/api/routers/userBans.ts
  • src/server/api/routers/users.ts
  • src/server/api/routers/verifiedDevelopers.ts
  • src/server/api/trpc.ts
  • src/server/api/utils/listingHelpers.ts
  • src/server/api/utils/pcListingHelpers.ts
  • src/server/api/utils/pinPermissions.ts
  • src/server/cache/warming.ts
  • src/server/db.ts
  • src/server/db/seo-queries.ts
  • src/server/notifications/analyticsService.ts
  • src/server/notifications/batchingService.ts
  • src/server/notifications/rateLimitService.ts
  • src/server/notifications/service.test.ts
  • src/server/notifications/service.ts
  • src/server/notifications/templates.ts
  • src/server/notifications/types.ts
  • src/server/prisma-client.ts
  • src/server/repositories/api-keys.repository.ts
  • src/server/repositories/audit-logs.repository.ts
  • src/server/repositories/base.repository.test.ts
  • src/server/repositories/base.repository.ts
  • src/server/repositories/bookmark.repository.ts
  • src/server/repositories/comments.repository.ts
  • src/server/repositories/cpus.repository.ts
  • src/server/repositories/device-brands.repository.ts
  • src/server/repositories/devices.repository.ts
  • src/server/repositories/emulators.repository.ts
  • src/server/repositories/entitlements.repository.ts
  • src/server/repositories/game-follow.repository.test.ts
  • src/server/repositories/game-follow.repository.ts
  • src/server/repositories/games.repository.test.ts
  • src/server/repositories/games.repository.ts
  • src/server/repositories/gpus.repository.ts
  • src/server/repositories/listings.repository.ts
  • src/server/repositories/notification-preferences.repository.test.ts
  • src/server/repositories/notification-preferences.repository.ts
  • src/server/repositories/pc-listings.repository.test.ts
  • src/server/repositories/pc-listings.repository.ts
  • src/server/repositories/performance-scales.repository.ts
  • src/server/repositories/releases.repository.ts
  • src/server/repositories/social.repository.test.ts
  • src/server/repositories/social.repository.ts
  • src/server/repositories/socs.repository.ts
  • src/server/repositories/systems.repository.ts
  • src/server/repositories/types.ts
  • src/server/repositories/user-bans.repository.ts
  • src/server/repositories/user-pc-presets.repository.ts
  • src/server/repositories/user-preferences.repository.test.ts
  • src/server/repositories/user-preferences.repository.ts
  • src/server/services/activity.service.ts
  • src/server/services/api-access.service.ts
  • src/server/services/audit.service.ts
  • src/server/services/author-risk.service.test.ts
  • src/server/services/author-risk.service.ts
  • src/server/services/catalog.service.ts
  • src/server/services/contributors.service.test.ts
  • src/server/services/contributors.service.ts
  • src/server/services/report-stats.service.test.ts
  • src/server/services/report-stats.service.ts
  • src/server/services/review-risk.service.test.ts
  • src/server/services/review-risk.service.ts
  • src/server/services/submission-risk.service.ts
  • src/server/services/user-profile.service.test.ts
  • src/server/services/user-profile.service.ts
  • src/server/services/vote-investigation.service.test.ts
  • src/server/services/vote-investigation.service.ts
  • src/server/services/vote-nullification.service.test.ts
  • src/server/services/vote-nullification.service.ts
  • src/server/utils/auth.ts
  • src/server/utils/cache/instances.ts
  • src/server/utils/compatibility-scoring.test.ts
  • src/server/utils/compatibility-scoring.ts
  • src/server/utils/emulator-config/azahar/azahar.converter.test.ts
  • src/server/utils/emulator-config/azahar/azahar.converter.ts
  • src/server/utils/emulator-config/eden/eden.converter.ts
  • src/server/utils/emulator-config/emulator-detector.ts
  • src/server/utils/emulator-config/gamenative/gamenative.converter.ts
  • src/server/utils/permissions.ts
  • src/server/utils/query-builders.test.ts
  • src/server/utils/query-builders.ts
  • src/server/utils/roleSync.ts
  • src/server/utils/spam-check.test.ts
  • src/server/utils/spam-check.ts
  • src/server/utils/spamDetection.test.ts
  • src/server/utils/spamDetection.ts
  • src/server/utils/submission-balance.ts
  • src/server/utils/transactions.ts
  • src/server/utils/vote-counts.test.ts
  • src/server/utils/vote-counts.ts
  • src/server/utils/vote-trust-effects.test.ts
  • src/server/utils/vote-trust-effects.ts
  • src/test/orm-mock.ts
  • src/test/setup.ts
  • src/utils/permission-system.test.ts
  • tests/auth.setup.ts
  • tests/helpers/data-factory.ts
  • tests/helpers/user-ban-fixtures.ts
  • tests/listings-success-rate-sorting.spec.ts
  • tests/pc-listings.spec.ts
  • tsconfig.json

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/update-prisma
✨ Simplify code
  • Create PR with simplified code
  • Commit simplified code in branch chore/update-prisma

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@Producdevity

Copy link
Copy Markdown
Owner Author

@coderabbitai review --dir src

@coderabbitai

coderabbitai Bot commented May 21, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Get the overall structure of the src directory
tree src -L 3 --dirsfirst 2>/dev/null || find src -maxdepth 3 -type d | sort

echo "---"
# Check package.json for Prisma versions
cat package.json | grep -i prisma

echo "---"
# Look at what files changed in the PR
gh pr diff 359 --name-only

echo "---"
# Check for any Prisma client instantiation or usage
rg -n "PrismaClient|`@prisma/client`|prisma\." src/ -l

echo "---"
# Check schema.prisma if it exists
fd "schema.prisma" --exec cat {}

Length of output: 75898


🏁 Script executed:

#!/bin/bash
# Check key Prisma-related files changed in src/
cat src/server/prisma-client.ts
echo "==="
cat src/server/db.ts
echo "==="
cat src/test/orm-mock.ts
echo "==="
cat src/test/setup.ts
echo "==="
cat prisma.config.ts
echo "==="
# Check for prisma version-specific usage patterns
rg -n "fromEnv\|datasourceUrl\|adapter\|PgAdapter\|pg\." src/server/prisma-client.ts src/server/db.ts
echo "==="
# Check if there are any deprecated Prisma APIs being used
rg -n "\.connect\(\|\.disconnect\(\|rejectOnNotFound\|experimentalFeatures\|engineType" src/ --type ts
echo "==="
# Look at the diff for the key src files
gh pr diff 359 -- src/server/prisma-client.ts src/server/db.ts src/test/setup.ts src/test/orm-mock.ts prisma.config.ts

Length of output: 15766


🏁 Script executed:

#!/bin/bash
# Get the actual diff for src/ files only
gh pr diff 359 -- 'src/**'

echo "==="
# Also check for any ORM mock enum discrepancies vs schema
# Check what enums are in the schema vs what's in the mock
echo "--- Schema enums ---"
grep -E "^enum " prisma/schema.prisma

echo "--- TrustAction in mock vs schema ---"
grep -A 30 "TrustAction" src/test/orm-mock.ts | head -40
echo "---"
grep -A 30 "^enum TrustAction" prisma/schema.prisma

echo "--- AuditAction in mock vs schema ---"
grep -A 20 "AuditAction" src/test/setup.ts | head -30
echo "---"
grep -A 20 "^enum AuditAction" prisma/schema.prisma

echo "--- AuditEntityType in mock vs schema ---"
grep -A 20 "AuditEntityType" src/test/setup.ts | head -30
echo "---"
grep -A 20 "^enum AuditEntityType" prisma/schema.prisma

echo "--- PcOs in mock vs schema ---"
grep -A 10 "PcOs" src/test/setup.ts | head -15
echo "---"
grep -A 10 "^enum PcOs" prisma/schema.prisma

echo "--- PermissionActionType in mock vs schema ---"
grep -A 15 "PermissionActionType" src/test/setup.ts | head -20
echo "---"
grep -A 15 "^enum PermissionActionType" prisma/schema.prisma

echo "--- NotificationType in mock vs schema (check for SOCIAL/new items) ---"
grep -A 60 "NotificationType" src/test/setup.ts | head -70

Length of output: 7021


@Producdevity — here's the review of the src/ directory for the Prisma 7.8 upgrade.


✅ Core Upgrade — Looks Good

The Prisma 7.x migration mechanics in src/ are correctly implemented:

  • src/server/prisma-client.ts: Correctly uses @prisma/adapter-pg (PrismaPg) — Prisma 7 requires a driver adapter, and this file already has it wired up properly.
  • src/server/db.ts: Singleton pattern, $extends, and logging config all look fine.
  • prisma.config.ts: Correctly uses the new defineConfig / env API from prisma/config introduced in Prisma 7.

⚠️ Stale Enum Mocks in Test Files

The upgrade didn't introduce these, but they're worth flagging since diverging mocks can let tests pass with values that don't match the actual schema.

1. src/test/orm-mock.tsTrustAction is incomplete

The mock only has 6 of the 20 values defined in the schema:

// Missing from orm-mock.ts TrustAction:
LISTING_RECEIVED_UPVOTE: 'LISTING_RECEIVED_UPVOTE',
LISTING_RECEIVED_DOWNVOTE: 'LISTING_RECEIVED_DOWNVOTE',
LISTING_DEVELOPER_VERIFIED: 'LISTING_DEVELOPER_VERIFIED',
COMMENT_RECEIVED_UPVOTE: 'COMMENT_RECEIVED_UPVOTE',
COMMENT_RECEIVED_DOWNVOTE: 'COMMENT_RECEIVED_DOWNVOTE',
REPORT_CONFIRMED: 'REPORT_CONFIRMED',
FALSE_REPORT: 'FALSE_REPORT',
GAME_SUBMISSION_APPROVED: 'GAME_SUBMISSION_APPROVED',
GAME_SUBMISSION_REJECTED: 'GAME_SUBMISSION_REJECTED',
HELPFUL_COMMENT: 'HELPFUL_COMMENT',
ADMIN_ADJUSTMENT_POSITIVE: 'ADMIN_ADJUSTMENT_POSITIVE',
ADMIN_ADJUSTMENT_NEGATIVE: 'ADMIN_ADJUSTMENT_NEGATIVE',
VOTE_NULLIFICATION_REVERSAL: 'VOTE_NULLIFICATION_REVERSAL',
VOTE_CHANGE_REVERSAL: 'VOTE_CHANGE_REVERSAL',

2. src/test/setup.ts — Several enum mismatches vs schema

PcOs — Values are wrong (schema has MACOS/FREEBSD/OTHER, not MAC_OS/CHROME_OS):

// Current (incorrect):
PcOs: { WINDOWS: 'WINDOWS', MAC_OS: 'MAC_OS', LINUX: 'LINUX', CHROME_OS: 'CHROME_OS' }

// Should be:
PcOs: { WINDOWS: 'WINDOWS', LINUX: 'LINUX', MACOS: 'MACOS', FREEBSD: 'FREEBSD', OTHER: 'OTHER' }

AuditAction — Missing 4 values:

PIN: 'PIN',
UNPIN: 'UNPIN',
NULLIFY_VOTES: 'NULLIFY_VOTES',
RESTORE_VOTES: 'RESTORE_VOTES',

AuditEntityType — Missing 1 value:

VOTE: 'VOTE',

PermissionActionType — Two phantom values, one real value missing:

// These don't exist in the schema — remove them:
USER_PERMISSION_ASSIGNED: 'USER_PERMISSION_ASSIGNED',
USER_PERMISSION_REMOVED: 'USER_PERMISSION_REMOVED',

// This is the actual schema value — add it:
USER_ROLE_CHANGED: 'USER_ROLE_CHANGED',

NotificationType — Missing all social notification types:

NEW_FOLLOWER: 'NEW_FOLLOWER',
FRIEND_REQUEST_RECEIVED: 'FRIEND_REQUEST_RECEIVED',
FRIEND_REQUEST_ACCEPTED: 'FRIEND_REQUEST_ACCEPTED',
FOLLOWED_USER_NEW_LISTING: 'FOLLOWED_USER_NEW_LISTING',
FOLLOWED_USER_NEW_PC_LISTING: 'FOLLOWED_USER_NEW_PC_LISTING',
FOLLOWED_GAME_NEW_LISTING: 'FOLLOWED_GAME_NEW_LISTING',
FOLLOWED_GAME_NEW_PC_LISTING: 'FOLLOWED_GAME_NEW_PC_LISTING',

TrustAction — Missing 2 values added to schema:

VOTE_NULLIFICATION_REVERSAL: 'VOTE_NULLIFICATION_REVERSAL',
VOTE_CHANGE_REVERSAL: 'VOTE_CHANGE_REVERSAL',

These mock fixes are not blocking for the Prisma upgrade itself, but syncing them would prevent future tests from silently passing with enum values that don't exist in the database. Would you like me to open a follow-up issue to track this?

@Producdevity

Copy link
Copy Markdown
Owner Author

@coderabbitai review --dir prisma

@coderabbitai

coderabbitai Bot commented May 21, 2026

Copy link
Copy Markdown
🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# List prisma directory structure
tree prisma -L 3 --dirsfirst 2>/dev/null || find prisma -maxdepth 3 | sort

echo "=== prisma.config.ts ==="
cat prisma.config.ts 2>/dev/null || echo "not found"

echo "=== schema.prisma ==="
cat prisma/schema.prisma

echo "=== PR diff for prisma/ ==="
gh pr diff 359 -- 'prisma/**' prisma.config.ts

echo "=== seed file(s) ==="
fd "seed" prisma/ --exec cat {}

echo "=== Check for deprecated Prisma features in schema ==="
grep -n "previewFeatures\|experimentalFeatures\|shadowDatabaseUrl\|rejectOnNotFound\|referentialIntegrity" prisma/schema.prisma

echo "=== Check migration history for any recent migrations ==="
ls -la prisma/migrations/ 2>/dev/null | tail -20
ls prisma/migrations/ 2>/dev/null | tail -10

echo "=== Check latest migration SQL ==="
fd "migration.sql" prisma/migrations/ | sort | tail -3 | xargs -I{} sh -c 'echo "=== {} ==="; cat "{}"'

Length of output: 309341


@Producdevity

Review of prisma/ for the Prisma 7.8 upgrade

What looks good

  • prisma.config.ts correctly uses prisma/config defineConfig/env and centralizes the datasource URL (including optional shadowDatabaseUrl). typedSql output is routed to prisma/sql as expected.
  • datasource db in schema.prisma declares only provider=postgresql, relying on config-level URL — this is the recommended 7.x pattern.
  • Migrations directory is healthy and ordered; migration_lock.toml is present. Recent enums and models (notifications, trust, audit, permissions, social, bookmarks, PC listings, etc.) are consistent with the src usage noted earlier.
  • Seed design favors idempotent upserts and avoids destructive updates (e.g., devicesSeeder not overwriting socId on update).

Items to double‑check for Prisma 7.8 compatibility

  • Generator provider string: schema.prisma uses provider = "prisma-client". Ensure this is valid for your pinned Prisma 7.8. If your project still expects "prisma-client-js", switch it back to avoid generate errors.
  • typedSql preview flag: generator client has previewFeatures = ["typedSql"] and prisma.config.ts defines typedSql.path. If typedSql is GA in your exact 7.8 build, leaving it in previewFeatures will cause a “unknown preview feature” error at generate time. Action: try npx prisma generate locally; if it errors about typedSql, remove previewFeatures from the generator block (leave the typedSql section in prisma.config.ts).
  • Seed import aliases: multiple seeders import from '@orm/client' and '@/…'. This works only if tsx resolves:
    • '@orm/' → prisma/generated/
    • '@/' → src/
      Please confirm your tsconfig paths reflect that; otherwise tsx prisma/seed.ts may fail at runtime.

Targeted nits and small improvements

  • seed.ts clearDb deletes a broad set of tables in child-before-parent order. Consider adding the newer tables to the purge set if you rely on --clear in local workflows (e.g., notification tables, trust_action_logs, api_keys/usage, relationships, bookmarks/follows). Today it’s fine for the upgrade; this is just to keep the switch clean when schema grows.
  • devicesSeeder leaves socId unchanged on update (commented out). That’s intentional to avoid churn, but it also means corrections to misassigned SoCs won’t reconcile. If you anticipate cleanup runs, consider a --reconcile-soc flag to apply socId updates safely.
  • systemsSeeder depends on PLATFORM_MAPPINGS from '@/data/constants'. Make sure this path is portable in the environment where seeds run (CI/dev). If not, add a lightweight constants copy under prisma/ or load via runtime import with resolved absolute path.

If you want, I can:

  • Open a follow-up issue to track the two generator/typedSql checks plus alias validation for seeds.
  • Add a quick tsconfig paths snippet to the repo to guarantee @orm and @ resolution during tsx seed runs.
✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@Producdevity Producdevity merged commit e242d14 into staging May 21, 2026
8 checks passed
@Producdevity Producdevity deleted the chore/update-prisma branch May 21, 2026 15:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant