Skip to content

Commit 79240b3

Browse files
authored
Merge pull request #352 from bcgov/chore/prisma-mapping
Prisma schema mapping
2 parents 46c7655 + 45c3fef commit 79240b3

301 files changed

Lines changed: 13014 additions & 12973 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.

.vscode/settings.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,6 @@
2727
"scss.lint.unknownAtRules": "ignore",
2828
"yaml.schemas": {
2929
"openapi:v3": "./app/src/docs/v1.api-spec.yaml"
30-
}
30+
},
31+
"todo-tree.tree.scanMode": "workspace only"
3132
}

app/app.ts

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1+
import { Prisma } from '@prisma/client';
12
import compression from 'compression';
23
import config from 'config';
34
import cors from 'cors';
5+
import { randomBytes } from 'crypto';
46
import express from 'express';
57
import helmet from 'helmet';
68
import { join } from 'path';
79
import querystring from 'querystring';
8-
import { randomBytes } from 'crypto';
910

1011
import { version as appVersion } from './package.json';
1112
import { getLogger, httpLogger } from './src/components/log';
@@ -124,11 +125,34 @@ export function errorHandler(
124125
res: Response,
125126
_next: NextFunction // eslint-disable-line @typescript-eslint/no-unused-vars
126127
): void {
127-
if (err.stack) log.error(err);
128-
129128
if (err instanceof Problem) {
130129
err.send(req, res);
130+
} else if (err instanceof Prisma.PrismaClientKnownRequestError) {
131+
switch (err.code) {
132+
case 'P2003':
133+
new Problem(500, {
134+
type: err.code,
135+
title: err.meta?.constraint as string,
136+
detail: err.meta?.modelName as string
137+
}).send(req, res);
138+
break;
139+
case 'P2025':
140+
new Problem(404, {
141+
type: err.code,
142+
title: err.meta?.cause as string,
143+
detail: err.meta?.modelName as string
144+
}).send(req, res);
145+
break;
146+
default:
147+
new Problem(500, {
148+
type: err.code,
149+
title: err.meta?.cause as string,
150+
detail: err.meta?.modelName as string
151+
}).send(req, res);
152+
break;
153+
}
131154
} else {
155+
if (err.stack) log.error(err);
132156
new Problem(500, { detail: err.message ?? err.toString() }).send(req, res);
133157
}
134158
}

0 commit comments

Comments
 (0)