diff --git a/src/api/index.js b/src/api/index.js
index 9bf9b1b..a382098 100644
--- a/src/api/index.js
+++ b/src/api/index.js
@@ -1 +1 @@
-export * from "./routes";
+export * from './routes';
diff --git a/src/api/middlewares/corsMiddleware.js b/src/api/middlewares/corsMiddleware.js
index 2d06d47..f64dd32 100644
--- a/src/api/middlewares/corsMiddleware.js
+++ b/src/api/middlewares/corsMiddleware.js
@@ -1,25 +1,25 @@
export function useCors(req, res, next) {
- res.set(
- "Content-security-policy",
- "default-src * data: blob: filesystem: about: ws: wss: 'unsafe-inline' 'unsafe-eval'; script-src * data: blob: 'unsafe-inline' 'unsafe-eval'; connect-src * data: blob: 'unsafe-inline'; img-src * data: blob: 'unsafe-inline'; frame-src * data: blob: ; style-src * data: blob: 'unsafe-inline'; font-src * data: blob: 'unsafe-inline';",
- );
+ res.set(
+ 'Content-security-policy',
+ "default-src * data: blob: filesystem: about: ws: wss: 'unsafe-inline' 'unsafe-eval'; script-src * data: blob: 'unsafe-inline' 'unsafe-eval'; connect-src * data: blob: 'unsafe-inline'; img-src * data: blob: 'unsafe-inline'; frame-src * data: blob: ; style-src * data: blob: 'unsafe-inline'; font-src * data: blob: 'unsafe-inline';"
+ );
- res.set("Access-Control-Allow-Origin", "*");
- res.set(
- "Access-Control-Allow-Headers",
- req.header("Access-Control-Request-Headers") || "*",
- );
- res.set(
- "Access-Control-Allow-Methods",
- req.header("Access-Control-Request-Methods") || "*",
- );
+ res.set('Access-Control-Allow-Origin', '*');
+ res.set(
+ 'Access-Control-Allow-Headers',
+ req.header('Access-Control-Request-Headers') || '*'
+ );
+ res.set(
+ 'Access-Control-Allow-Methods',
+ req.header('Access-Control-Request-Methods') || '*'
+ );
- res.set("Access-Control-Allow-Credentials", "true");
+ res.set('Access-Control-Allow-Credentials', 'true');
- // Handle preflight requests
- if (req.method === "OPTIONS") {
- return res.sendStatus(204);
- }
+ // Handle preflight requests
+ if (req.method === 'OPTIONS') {
+ return res.sendStatus(204);
+ }
- next();
+ next();
}
diff --git a/src/api/middlewares/index.js b/src/api/middlewares/index.js
index 3f8b800..1894f1a 100644
--- a/src/api/middlewares/index.js
+++ b/src/api/middlewares/index.js
@@ -1,2 +1,2 @@
-export * from "./corsMiddleware.js";
-export * from "./loggingMiddleware.js";
+export * from './corsMiddleware.js';
+export * from './loggingMiddleware.js';
diff --git a/src/api/middlewares/loggingMiddleware.js b/src/api/middlewares/loggingMiddleware.js
index 7f3b2ec..a47c08d 100644
--- a/src/api/middlewares/loggingMiddleware.js
+++ b/src/api/middlewares/loggingMiddleware.js
@@ -1,14 +1,14 @@
-import morgan from "morgan";
+import morgan from 'morgan';
const requestLogFormat =
- '[API] :remote-addr - :remote-user [:date[clf]] ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent" ":response-time ms"';
+ '[API] :remote-addr - :remote-user [:date[clf]] ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent" ":response-time ms"';
export function useLogging(logRequests) {
- return morgan(requestLogFormat, {
- skip: (req, res) => {
- let skip = !logRequests.includes(res.statusCode);
- if (logRequests.startsWith("-")) skip = !skip;
- return skip;
- },
- });
+ return morgan(requestLogFormat, {
+ skip: (req, res) => {
+ let skip = !logRequests.includes(res.statusCode);
+ if (logRequests.startsWith('-')) skip = !skip;
+ return skip;
+ }
+ });
}
diff --git a/src/api/routes.js b/src/api/routes.js
index 6229196..73d954e 100644
--- a/src/api/routes.js
+++ b/src/api/routes.js
@@ -1,18 +1,18 @@
-import * as routes from "./routes/index.js";
+import * as routes from './routes/index.js';
export function registerRoutes(app) {
- // app.get("/status", routes.statusRoute);
- Object.values(routes).forEach((route) => {
- console.log("Registering route:", route);
- if (!route.route)
- throw new Error(
- "Route definition is missing 'route' property: " +
- JSON.stringify(route),
- );
+ // app.get("/status", routes.statusRoute);
+ Object.values(routes).forEach(route => {
+ console.log('Registering route:', route);
+ if (!route.route)
+ throw new Error(
+ "Route definition is missing 'route' property: " +
+ JSON.stringify(route)
+ );
- if (route.onGet) app.get(route.route, route.onGet);
- if (route.onPost) app.post(route.route, route.onPost);
- if (route.onPut) app.put(route.route, route.onPut);
- if (route.onDelete) app.put(route.route, route.onDelete);
- });
+ if (route.onGet) app.get(route.route, route.onGet);
+ if (route.onPost) app.post(route.route, route.onPost);
+ if (route.onPut) app.put(route.route, route.onPut);
+ if (route.onDelete) app.put(route.route, route.onDelete);
+ });
}
diff --git a/src/api/routes/auth/index.js b/src/api/routes/auth/index.js
index 8306697..7113a17 100644
--- a/src/api/routes/auth/index.js
+++ b/src/api/routes/auth/index.js
@@ -1 +1 @@
-export * from "./registerRoute.js";
+export * from './registerRoute.js';
diff --git a/src/api/routes/auth/registerRoute.js b/src/api/routes/auth/registerRoute.js
index 14188a4..725c7d8 100644
--- a/src/api/routes/auth/registerRoute.js
+++ b/src/api/routes/auth/registerRoute.js
@@ -1,14 +1,14 @@
-import { User } from "#db/schemas/user.js";
+import { User } from '#db/schemas/user.js';
export const registerRoute = {
- route: "/auth/register",
- async onGet(req, res) {
- const result = await User.create({
- username: req.query.username,
- password: req.query.password,
- email: req.query.email,
- });
+ route: '/auth/register',
+ async onGet(req, res) {
+ const result = await User.create({
+ username: req.query.username,
+ password: req.query.password,
+ email: req.query.email
+ });
- res.send(result);
- },
+ res.send(result);
+ }
};
diff --git a/src/api/routes/index.js b/src/api/routes/index.js
index 147246e..745dd27 100644
--- a/src/api/routes/index.js
+++ b/src/api/routes/index.js
@@ -1,4 +1,4 @@
-export * from "./statusRoute.js";
-export * from "./indexRoute.js";
+export * from './statusRoute.js';
+export * from './indexRoute.js';
-export * from "./auth/index.js";
+export * from './auth/index.js';
diff --git a/src/api/routes/indexRoute.js b/src/api/routes/indexRoute.js
index 3685893..3b9eaef 100644
--- a/src/api/routes/indexRoute.js
+++ b/src/api/routes/indexRoute.js
@@ -1,6 +1,6 @@
export const indexRoute = {
- route: "/",
- onGet(req, res) {
- res.send("What art thou doing here???");
- },
+ route: '/',
+ onGet(req, res) {
+ res.send('What art thou doing here???');
+ }
};
diff --git a/src/api/routes/statusRoute.js b/src/api/routes/statusRoute.js
index b9974a5..41208a4 100644
--- a/src/api/routes/statusRoute.js
+++ b/src/api/routes/statusRoute.js
@@ -1,14 +1,14 @@
-import { User } from "#db/schemas/user.js";
+import { User } from '#db/schemas/user.js';
export const statusRoute = {
- route: "/status",
- async onGet(req, res) {
- const status = {
- status: "ok",
- timestamp: new Date().toISOString(),
- users: await User.countDocuments(),
- };
+ route: '/status',
+ async onGet(req, res) {
+ const status = {
+ status: 'ok',
+ timestamp: new Date().toISOString(),
+ users: await User.countDocuments()
+ };
- res.status(200).json(status);
- },
+ res.status(200).json(status);
+ }
};
diff --git a/src/api/start.js b/src/api/start.js
index ff94dec..6aa4567 100644
--- a/src/api/start.js
+++ b/src/api/start.js
@@ -1,25 +1,25 @@
-import express from "express";
-import { registerRoutes } from "./routes.js";
-import { useCors, useLogging } from "./middlewares/index.js";
-import { initDb } from "#db/index.js";
+import express from 'express';
+import { registerRoutes } from './routes.js';
+import { useCors, useLogging } from './middlewares/index.js';
+import { initDb } from '#db/index.js';
const app = express();
const PORT = process.env.PORT ?? 3000;
-const logRequests = process.env["LOG_REQUESTS"] ?? "-";
+const logRequests = process.env['LOG_REQUESTS'] ?? '-';
await initDb();
// Configure Express
app.use(express.json());
app.use(useCors);
-app.disable("x-powered-by");
+app.disable('x-powered-by');
if (logRequests) {
- app.use(useLogging(logRequests));
+ app.use(useLogging(logRequests));
}
registerRoutes(app);
app.listen(PORT, () => {
- console.log(`Server is running on http://localhost:${PORT}`);
+ console.log(`Server is running on http://localhost:${PORT}`);
});
diff --git a/src/db/db.js b/src/db/db.js
index 36f2105..9a7b50e 100644
--- a/src/db/db.js
+++ b/src/db/db.js
@@ -1,19 +1,19 @@
-import { connect } from "mongoose";
-import { readSecret } from "#util/secretUtils.js";
+import { connect } from 'mongoose';
+import { readSecret } from '#util/secretUtils.js';
export async function initDb() {
- const connectionString = await readSecret(
- process.env["DATABASE_SECRET_PATH"],
- );
- try {
- const res = await connect(connectionString);
- if (res.connection.readyState === 1) {
- console.log("[MONGODB] Connected successfully!");
- } else {
- console.error("[MONGODB] Failed to connect to ", connectionString);
+ const connectionString = await readSecret(
+ process.env['DATABASE_SECRET_PATH']
+ );
+ try {
+ const res = await connect(connectionString);
+ if (res.connection.readyState === 1) {
+ console.log('[MONGODB] Connected successfully!');
+ } else {
+ console.error('[MONGODB] Failed to connect to ', connectionString);
+ }
+ } catch (e) {
+ console.error('[MONGODB] Error connecting to database!');
+ throw e;
}
- } catch (e) {
- console.error("[MONGODB] Error connecting to database!");
- throw e;
- }
}
diff --git a/src/db/index.js b/src/db/index.js
index f55b773..cd306b7 100644
--- a/src/db/index.js
+++ b/src/db/index.js
@@ -1,2 +1,2 @@
-export * from "./db.js";
-export * from "./schemas/index.js";
+export * from './db.js';
+export * from './schemas/index.js';
diff --git a/src/db/schemas/user.js b/src/db/schemas/user.js
index eaddb08..da2516c 100644
--- a/src/db/schemas/user.js
+++ b/src/db/schemas/user.js
@@ -1,14 +1,28 @@
-import { model, Schema } from "mongoose";
+import { model, Schema } from 'mongoose';
export const userSchema = new Schema({
- username: {
- type: String,
- required: true,
- unique: true,
- trim: true,
- },
+ username: {
+ type: String,
+ required: true,
+ unique: true,
+ trim: true
+ },
+ passwordHash: {
+ type: String,
+ required: true
+ },
+ email: {
+ type: String,
+ required: true,
+ unique: true,
+ trim: true
+ },
+ createdAt: {
+ type: Date,
+ default: Date.now
+ }
});
-export const User = model("user", userSchema);
+export const User = model('user', userSchema);
-console.log("[MONGODB] User schema initialized successfully!");
+console.log('[MONGODB] User schema initialized successfully!');
diff --git a/src/util/index.js b/src/util/index.js
index 9a6c774..6b51d7b 100644
--- a/src/util/index.js
+++ b/src/util/index.js
@@ -1 +1 @@
-export * from "./secretUtils.js";
+export * from './secretUtils.js';
diff --git a/src/util/secretUtils.js b/src/util/secretUtils.js
index 33e5fef..bbad8ca 100644
--- a/src/util/secretUtils.js
+++ b/src/util/secretUtils.js
@@ -1,9 +1,9 @@
-import fs from "node:fs/promises";
+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();
+ if (!path) {
+ throw new Error('Path to secret file is required');
+ }
+ const content = await fs.readFile(path, 'utf8');
+ return content.trim();
}
|