From eea3bd11c0257b59984b39184d5c4b06dff36c5d Mon Sep 17 00:00:00 2001 From: Rory& Date: Thu, 29 May 2025 22:28:19 +0200 Subject: Get database working --- .idea/dataSources.xml | 7 +++++-- .idea/modules.xml | 8 ++++++++ .idea/nodejs-final-assignment.iml | 12 ++++++++++++ README.md | 9 +++++++++ src/api/routes/auth/registerRoute.js | 2 +- src/api/routes/statusRoute.js | 2 +- src/db/db.js | 9 ++++++--- src/db/schemas/user.js | 14 ++++++++++++++ src/db/schemas/userSchema.js | 14 -------------- src/util/index.js | 1 + src/util/secretUtils.js | 9 +++++++++ 11 files changed, 66 insertions(+), 21 deletions(-) create mode 100644 .idea/modules.xml create mode 100644 .idea/nodejs-final-assignment.iml create mode 100644 src/db/schemas/user.js delete mode 100644 src/db/schemas/userSchema.js create mode 100644 src/util/secretUtils.js diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml index 8df7846..f495692 100644 --- a/.idea/dataSources.xml +++ b/.idea/dataSources.xml @@ -1,12 +1,15 @@ - + mongo.4 true com.dbschema.MongoJdbcDriver - mongodb://localhost:27017/myproject + mongodb://localhost:27017/nodejs $ProjectFileDir$ + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..ca60690 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/nodejs-final-assignment.iml b/.idea/nodejs-final-assignment.iml new file mode 100644 index 0000000..24643cc --- /dev/null +++ b/.idea/nodejs-final-assignment.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/README.md b/README.md index 3bc89d4..e15cc71 100644 --- a/README.md +++ b/README.md @@ -1 +1,10 @@ [![Review Assignment Due Date](https://classroom.github.com/assets/deadline-readme-button-22041afd0340ce965d47ae6ef1cefeee28c7c493a6346c4f15d667ab976d596c.svg)](https://classroom.github.com/a/3A9ByVp3) + +# Deployment + +Environment variables: +| Name | Default | Description | +| ---- | ------- | ----------- | +| `PORT` | `3000` | The port the server will run on. | +| `LOG_REQUESTS` | `-` | Requests to log to the console by status, `-` to invert. | +| `DATABASE_SECRET_PATH` | `` | The path to the mongodb connection string. | \ No newline at end of file diff --git a/src/api/routes/auth/registerRoute.js b/src/api/routes/auth/registerRoute.js index b71c466..14188a4 100644 --- a/src/api/routes/auth/registerRoute.js +++ b/src/api/routes/auth/registerRoute.js @@ -1,4 +1,4 @@ -import { User } from "#db/schemas/userSchema.js"; +import { User } from "#db/schemas/user.js"; export const registerRoute = { route: "/auth/register", diff --git a/src/api/routes/statusRoute.js b/src/api/routes/statusRoute.js index f1cdb99..b9974a5 100644 --- a/src/api/routes/statusRoute.js +++ b/src/api/routes/statusRoute.js @@ -1,4 +1,4 @@ -import { User } from "#db/schemas/userSchema.js"; +import { User } from "#db/schemas/user.js"; export const statusRoute = { route: "/status", diff --git a/src/db/db.js b/src/db/db.js index bf7ccfa..36f2105 100644 --- a/src/db/db.js +++ b/src/db/db.js @@ -1,13 +1,16 @@ import { connect } from "mongoose"; +import { readSecret } from "#util/secretUtils.js"; export async function initDb() { - const connStr = "mongodb://root:Foxy1987@localhost/myproject"; + const connectionString = await readSecret( + process.env["DATABASE_SECRET_PATH"], + ); try { - const res = await connect(connStr); + const res = await connect(connectionString); if (res.connection.readyState === 1) { console.log("[MONGODB] Connected successfully!"); } else { - console.error("[MONGODB] Failed to connect to ", connStr); + console.error("[MONGODB] Failed to connect to ", connectionString); } } catch (e) { console.error("[MONGODB] Error connecting to database!"); diff --git a/src/db/schemas/user.js b/src/db/schemas/user.js new file mode 100644 index 0000000..eaddb08 --- /dev/null +++ b/src/db/schemas/user.js @@ -0,0 +1,14 @@ +import { model, Schema } from "mongoose"; + +export const userSchema = new Schema({ + username: { + type: String, + required: true, + unique: true, + trim: true, + }, +}); + +export const User = model("user", userSchema); + +console.log("[MONGODB] User schema initialized successfully!"); diff --git a/src/db/schemas/userSchema.js b/src/db/schemas/userSchema.js deleted file mode 100644 index eaddb08..0000000 --- a/src/db/schemas/userSchema.js +++ /dev/null @@ -1,14 +0,0 @@ -import { model, Schema } from "mongoose"; - -export const userSchema = new Schema({ - username: { - type: String, - required: true, - unique: true, - trim: true, - }, -}); - -export const User = model("user", userSchema); - -console.log("[MONGODB] User schema initialized successfully!"); diff --git a/src/util/index.js b/src/util/index.js index e69de29..9a6c774 100644 --- a/src/util/index.js +++ b/src/util/index.js @@ -0,0 +1 @@ +export * from "./secretUtils.js"; diff --git a/src/util/secretUtils.js b/src/util/secretUtils.js new file mode 100644 index 0000000..33e5fef --- /dev/null +++ b/src/util/secretUtils.js @@ -0,0 +1,9 @@ +import fs from "node:fs/promises"; + +export async function readSecret(path) { + if (!path) { + throw new Error("Path to secret file is required"); + } + const content = await fs.readFile(path, "utf8"); + return content.trim(); +} -- cgit 1.5.1