| name | prisma-upgrade-v7-removed-features |
| description | Removed Features. Reference when using this Prisma feature. |
| license | MIT |
| metadata | {"author":"prisma","version":"7.0.0"} |
Removed Features
Several features have been removed in Prisma v7. Here's how to migrate.
Client Middleware
Removed
prisma.$use(async (params, next) => {
const before = Date.now()
const result = await next(params)
const after = Date.now()
console.log(`Query took ${after - before}ms`)
return result
})
Use Client Extensions Instead
const prisma = new PrismaClient({ adapter }).$extends({
query: {
$allModels: {
async $allOperations({ operation, model, args, query }) {
const before = Date.now()
const result = await query(args)
const after = Date.now()
console.log(`${model}.${operation} took ${after - before}ms`)
return result
},
},
},
})
Common Middleware Patterns
Soft delete
const prisma = new PrismaClient({ adapter }).$extends({
query: {
user: {
async delete({ args, query }) {
return prisma.user.update({
where: args.where,
data: { deletedAt: new Date() },
})
},
async findMany({ args, query }) {
args.where = { ...args.where, deletedAt: null }
return query(args)
},
},
},
})
Logging
const prisma = new PrismaClient({ adapter }).$extends({
query: {
$allModels: {
async $allOperations({ operation, model, args, query }) {
console.log(`${model}.${operation}`, JSON.stringify(args))
return query(args)
},
},
},
})
Metrics
Removed
The Metrics preview feature has been removed.
const metrics = await prisma.$metrics.json()
Alternatives
Custom counter with extensions
let totalQueries = 0
const prisma = new PrismaClient({ adapter }).$extends({
client: {
async $totalQueries() {
return totalQueries
},
},
query: {
$allModels: {
async $allOperations({ query, args }) {
totalQueries += 1
return query(args)
},
},
},
})
const count = await prisma.$totalQueries()
Use driver-level metrics
Access metrics from the underlying driver adapter.
CLI Flags Removed
--skip-generate
Removed from migrate dev and db push.
prisma migrate dev --skip-generate
prisma migrate dev
prisma generate
--skip-seed
Removed from migrate dev and migrate reset.
prisma migrate dev --skip-seed
prisma migrate dev
prisma db seed
--schema and --url from db execute
prisma db execute --file ./script.sql --url "$DATABASE_URL"
prisma db execute --file ./script.sql
migrate diff Options
| Removed | Replacement |
|---|
--from-url | --from-config-datasource |
--to-url | --to-config-datasource |
--from-schema-datasource | --from-config-datasource |
--to-schema-datasource | --to-config-datasource |
--shadow-database-url | Configure in prisma.config.ts |
Example
prisma migrate diff --from-url "$DATABASE_URL" --to-schema schema.prisma
prisma migrate diff --from-config-datasource --to-schema schema.prisma
Automatic Behaviors Removed
Auto-generate after migrate
prisma migrate dev --name add_field
prisma generate
Auto-seed after migrate
prisma migrate reset --force
prisma db seed
rejectOnNotFound
Removed in v5.0.0 (already deprecated).
const prisma = new PrismaClient({
rejectOnNotFound: true,
})
const user = await prisma.user.findUniqueOrThrow({
where: { id: 1 },
})
const user = await prisma.user.findFirstOrThrow({
where: { email: 'test@example.com' },
})