Skip to content

Commit 38e81a3

Browse files
committed
fix(generator): enhance error mapping in mapError function to provide more detailed messages for various Prisma errors
This change improves error handling by including specific error messages from Prisma errors, making it easier to diagnose issues during database operations.
1 parent 03de9f4 commit 38e81a3

1 file changed

Lines changed: 23 additions & 5 deletions

File tree

packages/generator/src/generators/generateOperationCore.ts

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -113,27 +113,45 @@ export function mapError(error: unknown): HttpError {
113113
const code = (error as any).code as string
114114
const mapped = PRISMA_ERROR_MAP[code]
115115
if (mapped) {
116-
return new HttpError(mapped.status, mapped.message)
116+
const detail = (error as any).message
117+
const message = detail
118+
? mapped.message + ': ' + detail
119+
: mapped.message
120+
return new HttpError(mapped.status, message)
117121
}
118122
if (typeof code === 'string' && code.startsWith('P')) {
123+
const msg = (error as any).message || 'Database operation failed'
119124
console.warn(
120125
'[prisma-generator-express] Unmapped Prisma error code:',
121126
code,
122-
(error as any).message || '',
127+
msg,
123128
)
124-
return new HttpError(500, 'Database operation failed')
129+
return new HttpError(500, msg)
125130
}
126131
}
127132
128133
if (error && typeof error === 'object' && 'name' in error) {
129134
const name = (error as any).name
130135
if (name === 'PrismaClientValidationError') {
131-
return new HttpError(400, 'Invalid query parameters')
136+
return new HttpError(400, (error as any).message || 'Invalid query parameters')
137+
}
138+
if (name === 'PrismaClientKnownRequestError') {
139+
return new HttpError(400, (error as any).message || 'Database request error')
140+
}
141+
if (name === 'PrismaClientInitializationError') {
142+
return new HttpError(503, (error as any).message || 'Database connection failed')
143+
}
144+
if (name === 'PrismaClientRustPanicError') {
145+
return new HttpError(500, (error as any).message || 'Internal database engine error')
146+
}
147+
if (name === 'PrismaClientUnknownRequestError') {
148+
return new HttpError(500, (error as any).message || 'Unknown database error')
132149
}
133150
}
134151
152+
const msg = error instanceof Error ? error.message : String(error)
135153
console.error('[prisma-generator-express] Unhandled error:', error)
136-
return new HttpError(500, 'Internal server error')
154+
return new HttpError(500, msg || 'Internal server error')
137155
}
138156
139157
let _speedExtension: ((opts: any) => any) | null = null

0 commit comments

Comments
 (0)