Skip to content

Commit bf56781

Browse files
authored
Merge pull request #8 from nabadeep25/chore/add-env-validation
Chore/add env validation
2 parents 1b3748e + 1ad12ad commit bf56781

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ A boilerplate/starter project for quickly building RESTful APIs using Node.js,Ty
88
- Express
99
- Sequelize (Oracle, Postgres, MySQL, MariaDB, SQLite and SQL Server etc.)
1010

11+
## Link to NPM
12+
[@nabadeep25/create-ts-node-app](https://www.npmjs.com/package/@nabadeep25/create-ts-node-app)
13+
1114
## Table of Contents
1215

1316
- [Typescript-Node-Sequelize-Boilerplate](#typescript-node-sequelize-boilerplate)

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)