116 lines
3.2 KiB
JavaScript
116 lines
3.2 KiB
JavaScript
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");
|