|
1 | 1 | import dotenv from "dotenv"; |
| 2 | +import Joi from "joi"; |
2 | 3 | dotenv.config({ path: ".env" }); |
3 | 4 | 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 | + |
4 | 30 | export const dbConfig = { |
5 | 31 | host: process.env.DB_HOST, |
6 | 32 | port: parseInt(process.env.DB_PORT, 10), |
|
0 commit comments