Initialized Project with default middlewares and helpers, connected to Atlas Instance and created Swagger Setup. Created necessary DB models and authentication-authorization logic
This commit is contained in:
@@ -0,0 +1,115 @@
|
||||
import express from "express";
|
||||
// import fs from "fs";
|
||||
import path from "path";
|
||||
import cors from "cors";
|
||||
import mongoose from "mongoose";
|
||||
import dotenv from "dotenv";
|
||||
import swaggerUi from "swagger-ui-express";
|
||||
// import WebSocket, { WebSocketServer } from "ws";
|
||||
// import { bufferDataConverter, verifyToken } from "./helpers";
|
||||
// import rootHandler from "./event-handlers/root.handler";
|
||||
import swaggerDoc from "./documentation/documentation.json";
|
||||
import getSwaggerDocument from "./documentation";
|
||||
// import socketState from "./state/socketState.js";
|
||||
import { AdminRoutes, UserRoutes } from "./routes";
|
||||
|
||||
dotenv.config();
|
||||
|
||||
getSwaggerDocument();
|
||||
|
||||
console.log(
|
||||
"ENV",
|
||||
process.env.DB_NAME,
|
||||
process.env.DB_URL,
|
||||
process.env.DB_USER,
|
||||
process.env.DB_PASSWORD,
|
||||
);
|
||||
mongoose.connect(
|
||||
`mongodb+srv://${process.env.DB_USER}:${process.env.DB_PASSWORD}@${process.env.DB_URL}/${process.env.DB_NAME}`,
|
||||
{},
|
||||
);
|
||||
|
||||
const db = mongoose.connection;
|
||||
db.on("error", (error) => console.error(error));
|
||||
db.once("open", () =>
|
||||
console.log("Connected to MongoDB " + process.env.DB_NAME + " database"),
|
||||
);
|
||||
|
||||
const app = express();
|
||||
|
||||
app.use(cors());
|
||||
app.use(express.json());
|
||||
|
||||
app.use("/v0/docs", swaggerUi.serve, swaggerUi.setup(swaggerDoc));
|
||||
app.use("/v0/user", UserRoutes);
|
||||
app.use("/v0/admin", AdminRoutes);
|
||||
|
||||
app.use((err, req, res, next) => {
|
||||
const statusCode = err.status || 500;
|
||||
console.log("ACTUAL ERROR", err);
|
||||
res.status(statusCode).json({
|
||||
success: false,
|
||||
error: {
|
||||
...err,
|
||||
message: err.message,
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
app.listen(process.env.PORT || 3000, () => {
|
||||
console.log(`Server is running on port ${process.env.PORT || 3000}`);
|
||||
});
|
||||
|
||||
// const wss = new WebSocketServer({
|
||||
// port: 8080,
|
||||
// });
|
||||
|
||||
// wss.on("connection", (ws, request) => {
|
||||
// const url = new URL(request.url, `http://${request?.headers?.host}`);
|
||||
// const type = url.searchParams.get("type");
|
||||
// const id = url.searchParams.get("id");
|
||||
// const user_token = url.searchParams.get("token");
|
||||
// const system_token = url.searchParams.get("system_token");
|
||||
|
||||
// // Validate token before accepting connection
|
||||
// const userData = verifyToken(user_token, system_token);
|
||||
|
||||
// if (!userData) {
|
||||
// console.log("Authentication failed: Invalid token");
|
||||
// ws.close(4001, "Invalid or missing token");
|
||||
// return;
|
||||
// }
|
||||
|
||||
// // Store authenticated client in state
|
||||
// const clientData = {
|
||||
// userId: userData.userId,
|
||||
// type,
|
||||
// id,
|
||||
// authenticated: true,
|
||||
// userToken: user_token,
|
||||
// systemToken: system_token,
|
||||
// connectedAt: new Date(),
|
||||
// };
|
||||
|
||||
// socketState.addClient(ws, clientData);
|
||||
// console.log("Client connected:", { type, id, userId: userData.userId });
|
||||
|
||||
// ws.on("message", (message, request) => {
|
||||
// const data = bufferDataConverter(message);
|
||||
// console.log("message", data, typeof data);
|
||||
|
||||
// // Pass ws reference to rootHandler so it can access client data from socketState
|
||||
// rootHandler({ data, ws });
|
||||
// });
|
||||
|
||||
// // Clean up when client disconnects
|
||||
// ws.on("close", () => {
|
||||
// transactionRoomState.leaveAll(ws);
|
||||
// socketState.removeClient(ws);
|
||||
// console.log("Client disconnected:", { type, id });
|
||||
// });
|
||||
// });
|
||||
|
||||
//
|
||||
|
||||
// console.log("WebSocket server running on ws://localhost:8080");
|
||||
Reference in New Issue
Block a user