Commit afae4e62 authored by ThinhNC's avatar ThinhNC

feat: notFoundMiddleware

parent 69687704
...@@ -3,6 +3,11 @@ PORT=3000 ...@@ -3,6 +3,11 @@ PORT=3000
DATABASE_URL=postgresql://postgres.[project-ref]:[password]@aws-1-[region].pooler.supabase.com:6543/postgres DATABASE_URL=postgresql://postgres.[project-ref]:[password]@aws-1-[region].pooler.supabase.com:6543/postgres
DIRECT_URL=postgresql://postgres:[password]@db.[project-ref].supabase.co:5432/postgres DIRECT_URL=postgresql://postgres:[password]@db.[project-ref].supabase.co:5432/postgres
DB_HOST=aws-1-[region].pooler.supabase.com
DB_PORT=6543
DB_USER=postgres.[project-ref]
DB_PASSWORD=[password]
DB_NAME=postgres
SUPABASE_URL=https://[project-ref].supabase.co SUPABASE_URL=https://[project-ref].supabase.co
SUPABASE_PUBLISHABLE_KEY=your_supabase_publishable_key SUPABASE_PUBLISHABLE_KEY=your_supabase_publishable_key
......
...@@ -2,7 +2,7 @@ import express from 'express'; ...@@ -2,7 +2,7 @@ import express from 'express';
import cors from 'cors'; import cors from 'cors';
import helmet from 'helmet'; import helmet from 'helmet';
import morgan from 'morgan'; import morgan from 'morgan';
import { errorMiddleware } from './middlewares/error.middleware'; import { errorMiddleware, notFoundMiddleware } from './middlewares/error.middleware';
import routes from './routes'; import routes from './routes';
const app = express(); const app = express();
...@@ -15,6 +15,7 @@ app.use(express.urlencoded({ extended: true })); ...@@ -15,6 +15,7 @@ app.use(express.urlencoded({ extended: true }));
app.use('/api/v1', routes); app.use('/api/v1', routes);
app.use(notFoundMiddleware);
app.use(errorMiddleware); app.use(errorMiddleware);
export default app; export default app;
import { envConfig } from './env.config';
export const databaseConfig = {
url: envConfig.databaseUrl,
host: envConfig.database.host,
port: envConfig.database.port,
user: envConfig.database.user,
password: envConfig.database.password,
name: envConfig.database.name,
};
export default databaseConfig;
export const envConfig = { export const envConfig = {
nodeEnv: process.env.NODE_ENV || 'development', nodeEnv: process.env.NODE_ENV || 'development',
port: parseInt(process.env.PORT || '3000', 10), port: parseInt(process.env.PORT || '8888', 10),
database: {
host: process.env.DB_HOST || 'localhost',
port: parseInt(process.env.DB_PORT || '5432', 10),
user: process.env.DB_USER || 'postgres',
password: process.env.DB_PASSWORD || '',
name: process.env.DB_NAME || 'datacrawler',
},
get databaseUrl() {
return `postgresql://${this.database.user}:${encodeURIComponent(this.database.password)}@${this.database.host}:${this.database.port}/${this.database.name}?schema=public`;
},
jwt: { jwt: {
accessSecret: process.env.JWT_ACCESS_SECRET || 'default_access_secret', accessSecret: process.env.JWT_ACCESS_SECRET || 'default_access_secret',
refreshSecret: process.env.JWT_REFRESH_SECRET || 'default_refresh_secret', refreshSecret: process.env.JWT_REFRESH_SECRET || 'default_refresh_secret',
......
import { PrismaClient } from '@prisma/client'; import { PrismaClient } from '@prisma/client';
import databaseConfig from '../config/database.config';
export const prisma = new PrismaClient({ export const prisma = new PrismaClient({
datasources: {
db: {
url: databaseConfig.url,
},
},
log: process.env.NODE_ENV === 'development' log: process.env.NODE_ENV === 'development'
? ['query', 'error', 'warn'] ? ['query', 'error', 'warn']
: ['error', 'warn'], : ['error', 'warn'],
......
import { Request, Response, NextFunction } from 'express'; import { Request, Response, NextFunction } from 'express';
import { AppError } from '../common/errors/app-error'; import { AppError } from '../common/errors/app-error';
import { ERROR_CODE } from '../common/errors/error-code';
export function notFoundMiddleware(
req: Request,
res: Response,
next: NextFunction,
): void {
next(new AppError(`Route ${req.method} ${req.originalUrl} not found`, 404, ERROR_CODE.NOT_FOUND));
}
export function errorMiddleware( export function errorMiddleware(
error: Error, error: Error,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment