Files

144 lines
3.8 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,
LocationRoutes,
AssignmentRoutes,
PartnerRoutes,
VenueRoutes,
ProductRoutes,
VendorRoutes,
} 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({
origin: [
"http://localhost:1420",
"tauri://localhost",
"https://tauri.localhost",
"http://tauri.localhost",
],
}),
);
app.use(express.json());
app.get("/test", (req, res, next) => {
res.json({status: "success"})
})
app.use("/v0/docs", swaggerUi.serve, swaggerUi.setup(swaggerDoc));
app.use("/v0/user", UserRoutes);
app.use("/v0/admin", AdminRoutes);
app.use("/v0/location", LocationRoutes);
app.use("/v0/assignment", AssignmentRoutes);
app.use("/v0/partner", PartnerRoutes);
app.use("/v0/venue", VenueRoutes);
app.use("/v0/product", ProductRoutes);
app.use("/v0/vendor", VendorRoutes);
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");