Skip to content

Commit 083cf5e

Browse files
strideraclaude
andcommitted
Upgrade Prisma 6 to 7 with driver adapter pattern
Prisma 7 requires mandatory driver adapters and moves the generated client to a custom output path. This migrates the entire monorepo: - prisma + @prisma/client ^6.16.1 → ^7.0.0 (resolved 7.4.1) - Generator: prisma-client-js → prisma-client with output to src/generated/prisma - Datasource URL moved from schema.prisma to prisma.config.ts (Prisma 7 requirement) - All ~100 files: from '@prisma/client' → from '@muditor/db' - Every new PrismaClient() now uses PrismaPg adapter - Added @prisma/adapter-pg + pg driver to packages/db Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 4188253 commit 083cf5e

109 files changed

Lines changed: 375 additions & 213 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,5 +131,8 @@ playwright-report/
131131
blob-report/
132132
playwright/.cache/
133133

134+
# Generated Prisma client (Prisma 7+)
135+
packages/db/src/generated/
136+
134137
# Serena Memories
135138
.serena/

apps/api/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
"@nestjs/jwt": "^11.0.0",
3131
"@nestjs/passport": "^11.0.5",
3232
"@nestjs/platform-express": "^11.1.6",
33-
"@prisma/client": "^6.16.1",
33+
"@prisma/adapter-pg": "^7.0.0",
3434
"@radix-ui/react-tooltip": "^1.2.8",
3535
"@sendgrid/mail": "^8.1.5",
3636
"bcrypt": "^6.0.0",

apps/api/src/__tests__/data-integrity.spec.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,11 @@ describe('Data Integrity Tests', () => {
2626
app = moduleFixture.createNestApplication();
2727
await app.init();
2828

29-
prisma = new PrismaClient();
29+
const { PrismaPg } = await import('@prisma/adapter-pg');
30+
const adapter = new PrismaPg({
31+
connectionString: process.env.DATABASE_URL!,
32+
});
33+
prisma = new PrismaClient({ adapter });
3034
// Ensure test zone exists for foreign key relations (zones.id=1000)
3135
await prisma.zones.upsert({
3236
where: { id: 1000 },

apps/api/src/__tests__/quest-data-integrity.spec.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,11 @@ describe('Quest Data Integrity Tests', () => {
2323
app = moduleFixture.createNestApplication();
2424
await app.init();
2525

26-
prisma = new PrismaClient();
26+
const { PrismaPg } = await import('@prisma/adapter-pg');
27+
const adapter = new PrismaPg({
28+
connectionString: process.env.DATABASE_URL!,
29+
});
30+
prisma = new PrismaClient({ adapter });
2731

2832
// Ensure test zone exists for foreign key relations
2933
await prisma.zones.upsert({

apps/api/src/abilities/abilities.dto.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {
88
SkillCategory,
99
SpellSphere,
1010
ElementType,
11-
} from '@prisma/client';
11+
} from '@muditor/db';
1212

1313
// Register enums with GraphQL (Position already registered in mob.dto.ts)
1414
registerEnumType(SaveType, { name: 'SaveType' });

apps/api/src/abilities/abilities.input.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {
77
SaveType,
88
SpellSphere,
99
ElementType,
10-
} from '@prisma/client';
10+
} from '@muditor/db';
1111

1212
@InputType()
1313
export class CreateAbilityInput {

apps/api/src/account-storage/account-storage.resolver.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { UseGuards } from '@nestjs/common';
22
import { Args, Int, Mutation, Query, Resolver } from '@nestjs/graphql';
3-
import type { Users } from '@prisma/client';
3+
import type { Users } from '@muditor/db';
44
import { BigIntResolver } from 'graphql-scalars';
55
import { CurrentUser } from '../auth/decorators/current-user.decorator';
66
import { GraphQLJwtAuthGuard } from '../auth/guards/graphql-jwt-auth.guard';

apps/api/src/auth/auth.resolver.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { UseGuards } from '@nestjs/common';
22
import { Args, Mutation, Query, Resolver } from '@nestjs/graphql';
3-
import type { Users as PrismaUser } from '@prisma/client';
3+
import type { Users as PrismaUser } from '@muditor/db';
44
import { User } from '../users/entities/user.entity';
55
import { UsersService } from '../users/users.service';
66
import { AuthService } from './auth.service';

apps/api/src/auth/auth.service.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { ConflictException, UnauthorizedException } from '@nestjs/common';
22
import { JwtService } from '@nestjs/jwt';
33
import { Test, TestingModule } from '@nestjs/testing';
4-
import { UserRole } from '@prisma/client';
4+
import { UserRole } from '@muditor/db';
55
import * as bcrypt from 'bcrypt';
66
import { DatabaseService } from '../database/database.service';
77
import { EmailService } from '../email/email.service';

apps/api/src/auth/auth.service.ts

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {
66
UnauthorizedException,
77
} from '@nestjs/common';
88
import { JwtService } from '@nestjs/jwt';
9-
import { UserRole, type Users } from '@prisma/client';
9+
import { UserRole, type Users } from '@muditor/db';
1010
import * as bcrypt from 'bcrypt';
1111
import * as crypto from 'crypto';
1212
import { DatabaseService } from '../database/database.service';
@@ -18,16 +18,15 @@ import { RegisterInput } from './dto/register.input';
1818
import type { JwtPayload } from './interfaces/jwt-payload.interface';
1919

2020
// Sanitized user returned by auth operations (no password or reset tokens)
21-
interface SanitizedUser
22-
extends Omit<
23-
User,
24-
| 'passwordHash'
25-
| 'resetToken'
26-
| 'resetTokenExpiry'
27-
| 'failedLoginAttempts'
28-
| 'lockedUntil'
29-
| 'lastFailedLogin'
30-
> {
21+
interface SanitizedUser extends Omit<
22+
User,
23+
| 'passwordHash'
24+
| 'resetToken'
25+
| 'resetTokenExpiry'
26+
| 'failedLoginAttempts'
27+
| 'lockedUntil'
28+
| 'lastFailedLogin'
29+
> {
3130
passwordHash?: never;
3231
resetToken?: never;
3332
resetTokenExpiry?: never;

0 commit comments

Comments
 (0)