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");