Skip to content

Commit 2460f4d

Browse files
committed
chore:✅ add env validation
1 parent 1b3748e commit 2460f4d

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

src/config/config.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,32 @@
11
import dotenv from "dotenv";
2+
import Joi from "joi";
23
dotenv.config({ path: ".env" });
34
import { Dialect } from "sequelize";
5+
6+
const envSchema = Joi.object({
7+
DB_HOST: Joi.string().required(),
8+
DB_PORT: Joi.number().required(),
9+
DB_TYPE: Joi.string().valid("mysql", "postgres", "sqlite", "mariadb", "mssql").required(),
10+
DB_NAME: Joi.string().required(),
11+
DB_USER: Joi.string().required(),
12+
DB_PASSWORD: Joi.string().required(),
13+
SECRET: Joi.string().required(),
14+
TOKEN_EXPIRY_HOUR: Joi.string().required(),
15+
EMAIL_SERVICE: Joi.string().required(),
16+
EMAIL_USER: Joi.string().required(),
17+
EMAIL_PASS: Joi.string().required(),
18+
EMAIL_FROM: Joi.string().required(),
19+
OTP_EXPIRY_MIN: Joi.string().required(),
20+
OTP_SECRET: Joi.string().required(),
21+
NODE_ENV: Joi.string().valid("development", "production", "test").default("development"),
22+
PORT: Joi.number().default(3000)
23+
}).unknown();
24+
25+
const { error } = envSchema.validate(process.env);
26+
if (error) {
27+
throw new Error(`Config validation error: ${error.message}`);
28+
}
29+
430
export const dbConfig = {
531
host: process.env.DB_HOST,
632
port: parseInt(process.env.DB_PORT, 10),

0 commit comments

Comments
 (0)