瀏覽代碼

use configuration files during runtime

Sven Czarnian 2 年之前
父節點
當前提交
dfa037cf9d
共有 4 個文件被更改,包括 28 次插入14 次删除
  1. 16 6
      package-lock.json
  2. 2 0
      package.json
  3. 1 1
      src/app.module.ts
  4. 9 7
      src/config/Configuration.ts

+ 16 - 6
package-lock.json

@@ -14,6 +14,7 @@
         "@nestjs/core": "^9.0.0",
         "@nestjs/mongoose": "^9.2.0",
         "@nestjs/platform-express": "^9.0.0",
+        "js-yaml": "^4.1.0",
         "mongoose": "^6.6.7",
         "reflect-metadata": "^0.1.13",
         "rimraf": "^3.0.2",
@@ -25,6 +26,7 @@
         "@nestjs/testing": "^9.0.0",
         "@types/express": "^4.17.13",
         "@types/jest": "28.1.8",
+        "@types/js-yaml": "^4.0.5",
         "@types/node": "^16.0.0",
         "@types/supertest": "^2.0.11",
         "@typescript-eslint/eslint-plugin": "^5.0.0",
@@ -1996,6 +1998,12 @@
         "pretty-format": "^28.0.0"
       }
     },
+    "node_modules/@types/js-yaml": {
+      "version": "4.0.5",
+      "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.5.tgz",
+      "integrity": "sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==",
+      "dev": true
+    },
     "node_modules/@types/json-schema": {
       "version": "7.0.11",
       "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
@@ -2621,8 +2629,7 @@
     "node_modules/argparse": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
-      "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
-      "dev": true
+      "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
     },
     "node_modules/array-flatten": {
       "version": "1.1.1",
@@ -5796,7 +5803,6 @@
       "version": "4.1.0",
       "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
       "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
-      "dev": true,
       "dependencies": {
         "argparse": "^2.0.1"
       },
@@ -10075,6 +10081,12 @@
         "pretty-format": "^28.0.0"
       }
     },
+    "@types/js-yaml": {
+      "version": "4.0.5",
+      "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.5.tgz",
+      "integrity": "sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==",
+      "dev": true
+    },
     "@types/json-schema": {
       "version": "7.0.11",
       "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
@@ -10558,8 +10570,7 @@
     "argparse": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
-      "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
-      "dev": true
+      "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
     },
     "array-flatten": {
       "version": "1.1.1",
@@ -12934,7 +12945,6 @@
       "version": "4.1.0",
       "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
       "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
-      "dev": true,
       "requires": {
         "argparse": "^2.0.1"
       }

+ 2 - 0
package.json

@@ -26,6 +26,7 @@
     "@nestjs/core": "^9.0.0",
     "@nestjs/mongoose": "^9.2.0",
     "@nestjs/platform-express": "^9.0.0",
+    "js-yaml": "^4.1.0",
     "mongoose": "^6.6.7",
     "reflect-metadata": "^0.1.13",
     "rimraf": "^3.0.2",
@@ -37,6 +38,7 @@
     "@nestjs/testing": "^9.0.0",
     "@types/express": "^4.17.13",
     "@types/jest": "28.1.8",
+    "@types/js-yaml": "^4.0.5",
     "@types/node": "^16.0.0",
     "@types/supertest": "^2.0.11",
     "@typescript-eslint/eslint-plugin": "^5.0.0",

+ 1 - 1
src/app.module.ts

@@ -16,7 +16,7 @@ import Configuration from './config/configuration';
       inject: [ConfigService],
       useFactory: async (config: ConfigService) => ({
         uri: `mongodb://${config.get<string>(
-          'database.url',
+          'database.host',
         )}:${config.get<number>('database.port')}/${config.get<string>(
           'database.name',
         )}`,

+ 9 - 7
src/config/Configuration.ts

@@ -1,7 +1,9 @@
-export default () => ({
-  database: {
-    url: process.env.DATABASE_URL || 'localhost',
-    port: parseInt(process.env.DATABASE_PORT, 10) || 27017,
-    name: process.env.DATABASE_NAME || 'aman',
-  },
-});
+import { readFileSync } from 'fs';
+import * as yaml from 'js-yaml';
+import { join } from 'path';
+
+export default () => {
+  return yaml.load(
+    readFileSync(join(__dirname, 'config.yaml'), 'utf8'),
+  ) as Record<string, any>;
+};