parent
							
								
									444a5b345a
								
							
						
					
					
						commit
						3355b9bf25
					
				@ -1,6 +0,0 @@
 | 
				
			||||
PORT=3005
 | 
				
			||||
 | 
				
			||||
DATABASE_URL=postgresql://postgres:postgres@localhost:5433/user-authentication
 | 
				
			||||
 | 
				
			||||
PUBLIC_KEY_PATH=tokens/jwt.key.pub
 | 
				
			||||
PRIVATE_KEY_PATH=tokens/jwt.key
 | 
				
			||||
@ -1,32 +0,0 @@
 | 
				
			||||
# syntax=docker/dockerfile:1
 | 
				
			||||
FROM node:18
 | 
				
			||||
 | 
				
			||||
WORKDIR /app
 | 
				
			||||
 | 
				
			||||
COPY --chown=node:node . .
 | 
				
			||||
 | 
				
			||||
RUN rm -f *.env *.env.*
 | 
				
			||||
 | 
				
			||||
RUN apt-get update -y && apt-get install -y dumb-init
 | 
				
			||||
 | 
				
			||||
RUN npm install
 | 
				
			||||
 | 
				
			||||
ENV NODE_ENV=production
 | 
				
			||||
 | 
				
			||||
RUN npm run prefullbuild && npm run prebuild && npm run build
 | 
				
			||||
 | 
				
			||||
RUN mkdir temp temp/.prisma temp/@prisma temp/prisma && cp -r ./node_modules/.prisma/* ./temp/.prisma/ && cp -r ./node_modules/@prisma/* ./temp/@prisma/ && cp -r  ./node_modules/prisma/* ./temp/prisma/
 | 
				
			||||
 | 
				
			||||
RUN rm -rdf node_modules
 | 
				
			||||
 | 
				
			||||
RUN npm install --production
 | 
				
			||||
 | 
				
			||||
RUN cp -r ./temp/* ./node_modules/ && rm -rdf temp
 | 
				
			||||
 | 
				
			||||
RUN ls | grep -v node_modules | grep -v dist | xargs rm -rfv
 | 
				
			||||
 | 
				
			||||
RUN cp -r ./dist/* ./ && rm -rdf dist
 | 
				
			||||
 | 
				
			||||
USER node
 | 
				
			||||
 | 
				
			||||
CMD ["dumb-init", "node", "./main.js"]
 | 
				
			||||
@ -1 +0,0 @@
 | 
				
			||||
migrations
 | 
				
			||||
@ -0,0 +1,3 @@
 | 
				
			||||
node_modules
 | 
				
			||||
# Keep environment variables out of version control
 | 
				
			||||
.env
 | 
				
			||||
@ -0,0 +1,2 @@
 | 
				
			||||
export { PrismaClient as AuthClient } from '.prisma/auth-client';
 | 
				
			||||
export * from '.prisma/auth-client';
 | 
				
			||||
@ -0,0 +1 @@
 | 
				
			||||
export class RecordNotFoundError extends Error {}
 | 
				
			||||
@ -0,0 +1 @@
 | 
				
			||||
export class UniqueConstraintFailedError extends Error {}
 | 
				
			||||
@ -0,0 +1,26 @@
 | 
				
			||||
import {
 | 
				
			||||
  CallHandler,
 | 
				
			||||
  ConflictException,
 | 
				
			||||
  ExecutionContext,
 | 
				
			||||
  Injectable,
 | 
				
			||||
  NestInterceptor,
 | 
				
			||||
  NotFoundException,
 | 
				
			||||
} from '@nestjs/common';
 | 
				
			||||
import { catchError, Observable } from 'rxjs';
 | 
				
			||||
import { RecordNotFoundError } from '../error/record-not-found.error';
 | 
				
			||||
import { UniqueConstraintFailedError } from '../error/unique-constraint-failed.error';
 | 
				
			||||
 | 
				
			||||
@Injectable()
 | 
				
			||||
export class PrismaErrorInterceptor implements NestInterceptor {
 | 
				
			||||
  intercept(context: ExecutionContext, next: CallHandler): Observable<any> {
 | 
				
			||||
    return next.handle().pipe(
 | 
				
			||||
      catchError((err) => {
 | 
				
			||||
        if (err instanceof RecordNotFoundError)
 | 
				
			||||
          throw new NotFoundException(err.message);
 | 
				
			||||
        if (err instanceof UniqueConstraintFailedError)
 | 
				
			||||
          throw new ConflictException(err.message);
 | 
				
			||||
        throw err;
 | 
				
			||||
      })
 | 
				
			||||
    );
 | 
				
			||||
  }
 | 
				
			||||
}
 | 
				
			||||
@ -0,0 +1 @@
 | 
				
			||||
export { AuthClient } from './auth';
 | 
				
			||||
					Loading…
					
					
				
		Reference in new issue