diff --git a/frontend/src/components/ocme/ocmeCycleCount.tsx b/frontend/src/components/ocme/ocmeCycleCount.tsx
index 71c4348..da2802c 100644
--- a/frontend/src/components/ocme/ocmeCycleCount.tsx
+++ b/frontend/src/components/ocme/ocmeCycleCount.tsx
@@ -1,185 +1,212 @@
-import {toast} from "sonner";
-import {LstCard} from "../extendedUI/LstCard";
-import {Button} from "../ui/button";
-import {Input} from "../ui/input";
-import {Table, TableBody, TableCell, TableHead, TableHeader, TableRow} from "../ui/table";
-import {Skeleton} from "../ui/skeleton";
+import { toast } from "sonner";
+import { LstCard } from "../extendedUI/LstCard";
+import { Button } from "../ui/button";
+import { Input } from "../ui/input";
+import {
+ Table,
+ TableBody,
+ TableCell,
+ TableHead,
+ TableHeader,
+ TableRow,
+} from "../ui/table";
+import { Skeleton } from "../ui/skeleton";
//import CycleCountLog from "./CycleCountLog";
-import {Select, SelectContent, SelectItem, SelectTrigger, SelectValue} from "../ui/select";
-import {Controller, useForm} from "react-hook-form";
+import {
+ Select,
+ SelectContent,
+ SelectItem,
+ SelectTrigger,
+ SelectValue,
+} from "../ui/select";
+import { Controller, useForm } from "react-hook-form";
import axios from "axios";
-import {useState} from "react";
+import { useState } from "react";
export default function OcmeCycleCount() {
- const token = localStorage.getItem("auth_token");
- const [data, setData] = useState([]);
- const [counting, setCounting] = useState(false);
- const {
- register,
- handleSubmit,
- //watch,
- formState: {errors},
- reset,
- control,
- } = useForm();
+ const token = localStorage.getItem("auth_token");
+ const [data, setData] = useState([]);
+ const [counting, setCounting] = useState(false);
+ const {
+ register,
+ handleSubmit,
+ //watch,
+ formState: { errors },
+ reset,
+ control,
+ } = useForm();
- const onSubmit = async (data: any) => {
- setData([]);
- setCounting(true);
- toast.success(`Cycle count started`);
- try {
- const res = await axios.post("/ocme/api/v1/cyclecount", data, {
- headers: {Authorization: `Bearer ${token}`},
- });
- toast.success(res.data.message);
- setData(res.data.data);
- setCounting(false);
- reset();
- } catch (error) {
- toast.error("There was an error cycle counting");
- setCounting(false);
- reset();
- }
- };
- return (
-
-
-
- Please enter the name or laneID you want to cycle count.
-
-
-
-
-
- LaneID
- Lane
- AV
- Description
- Running Number
- In Ocme
- In Stock
- Result
-
-
- {data.length === 0 ? (
-
- {Array(10)
- .fill(0)
- .map((_, i) => (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ))}
-
- ) : (
- <>
- {data.map((i: any) => {
- let classname = ``;
- if (i.info === "Quality Check Required") {
- classname = `bg-red-500`;
- }
- if (i.info === "Sent to Inv") {
- classname = `bg-amber-700`;
- }
- return (
-
-
- {i.alpla_laneID}
-
-
- {i.alpla_laneDescription}
-
-
- {i.Article}
-
-
- {i.alpla_laneDescription}
-
-
- {i.runningNumber}
-
- {i.ocme}
- {i.stock}
- {i.info}
-
- );
- })}
- >
- )}
-
-
-
-
- {/*
+ const onSubmit = async (data: any) => {
+ setData([]);
+ setCounting(true);
+ toast.success(`Cycle count started`);
+ try {
+ const res = await axios.post("/ocme/api/v1/cycleCount", data, {
+ headers: { Authorization: `Bearer ${token}` },
+ });
+ console.log(data);
+ toast.success(res.data.message);
+ setData(res.data.data);
+ setCounting(false);
+ reset();
+ } catch (error) {
+ toast.error("There was an error cycle counting");
+ setCounting(false);
+ reset();
+ }
+ };
+
+ return (
+
+
+
+
+ Please enter the name or laneID you want to cycle count.
+
+
+
+
+
+
+ LaneID
+ Lane
+ AV
+ Description
+ Running Number
+ In Ocme
+ In Stock
+ Result
+
+
+ {data?.length === 0 ? (
+
+ {Array(10)
+ .fill(0)
+ .map((_, i) => (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ))}
+
+ ) : (
+ <>
+ {data?.map((i: any) => {
+ let classname = ``;
+ if (i.info === "Quality Check Required") {
+ classname = `bg-red-500`;
+ }
+ if (i.info === "Sent to Inv") {
+ classname = `bg-amber-700`;
+ }
+ return (
+
+
+ {i.alpla_laneID}
+
+
+ {i.alpla_laneDescription}
+
+
+ {i.Article}
+
+
+ {i.alpla_laneDescription}
+
+
+ {i.runningNumber}
+
+
+ {i.ocme}
+
+
+ {i.stock}
+
+
+ {i.info}
+
+
+ );
+ })}
+ >
+ )}
+
+
+
+
+ {/*
*/}
-
- );
+
+ );
}
diff --git a/package.json b/package.json
index 46db329..23d8615 100644
--- a/package.json
+++ b/package.json
@@ -32,7 +32,7 @@
}
},
"admConfig": {
- "build": 53,
+ "build": 54,
"oldBuild": "backend-0.1.3.zip"
},
"devDependencies": {
diff --git a/server/index.ts b/server/index.ts
index 87305ba..3bddcc2 100644
--- a/server/index.ts
+++ b/server/index.ts
@@ -53,17 +53,17 @@ app.use(
);
// Middleware to normalize route case
-app.use("*", async (c, next) => {
- const lowercasedUrl = c.req.url.toLowerCase();
- //console.log("Incoming Request:", c.req.url, c.req.method);
- // If the URL is already lowercase, continue as usual
- if (c.req.url === lowercasedUrl) {
- return next();
- }
+// app.use("*", async (c, next) => {
+// const lowercasedUrl = c.req.url.toLowerCase();
+// //console.log("Incoming Request:", c.req.url, c.req.method);
+// // If the URL is already lowercase, continue as usual
+// if (c.req.url === lowercasedUrl) {
+// await next();
+// }
- // Otherwise, re-route internally
- return c.redirect(lowercasedUrl, 308); // 308 preserves the HTTP method
-});
+// // Otherwise, re-route internally
+// return c.redirect(lowercasedUrl, 308); // 308 preserves the HTTP method
+// });
app.doc("/api/ref", {
openapi: "3.0.0",
diff --git a/server/scripts/update.ps1 b/server/scripts/update.ps1
index f2931b5..1a78291 100644
--- a/server/scripts/update.ps1
+++ b/server/scripts/update.ps1
@@ -415,10 +415,10 @@ try {
Start-Service -DisplayName $serviceLstV2
Start-Sleep -Seconds 1
Write-Host "$($server) finished updating"
- if($token -eq "usday1"){
- Write-Host "Starting $($serviceOcme)"
- Start-Service -DisplayName $serviceOcme
- }
+ # if($token -eq "usday1"){
+ # Write-Host "Starting $($serviceOcme)"
+ # Start-Service -DisplayName $serviceOcme
+ # }
}
Invoke-Command -ComputerName $server -ScriptBlock $plantFunness -ArgumentList $server, $token, $location, $buildZip, $buildLoc, $obslst, $obsBuild -Credential $credentials
\ No newline at end of file
diff --git a/server/scripts/updateServers.ts b/server/scripts/updateServers.ts
index 987b05f..ff31d7f 100644
--- a/server/scripts/updateServers.ts
+++ b/server/scripts/updateServers.ts
@@ -1,173 +1,189 @@
-import {spawn} from "child_process";
-import {getAppInfo} from "../globalUtils/appInfo.js";
-import {db} from "../../database/dbclient.js";
-import {serverData} from "../../database/schema/serverData.js";
-import {eq, sql} from "drizzle-orm";
-import {createLog} from "../services/logger/logger.js";
+import { spawn } from "child_process";
+import { getAppInfo } from "../globalUtils/appInfo.js";
+import { db } from "../../database/dbclient.js";
+import { serverData } from "../../database/schema/serverData.js";
+import { eq, sql } from "drizzle-orm";
+import { createLog } from "../services/logger/logger.js";
type UpdateServerResponse = {
- success: boolean;
- message: string;
+ success: boolean;
+ message: string;
};
-export const updateServer = async (devApp: string, server: string | null): Promise
=> {
- const app = await getAppInfo(devApp);
- const serverInfo = await db
+export const updateServer = async (
+ devApp: string,
+ server: string | null
+): Promise => {
+ const app = await getAppInfo(devApp);
+ const serverInfo = await db
.select()
.from(serverData)
.where(eq(serverData.plantToken, server?.toLowerCase() ?? ""));
- if (serverInfo.length === 0) {
- createLog(
- "error",
- "lst",
- "serverUpdater",
- `Looks like you are missing the plant token or have entered an incorrect one please try again.`
- );
- return {
- success: false,
- message: "Looks like you are missing the plant token or have entered an incorrect one please try again.",
- };
- }
+ if (serverInfo.length === 0) {
+ createLog(
+ "error",
+ "lst",
+ "serverUpdater",
+ `Looks like you are missing the plant token or have entered an incorrect one please try again.`
+ );
+ return {
+ success: false,
+ message:
+ "Looks like you are missing the plant token or have entered an incorrect one please try again.",
+ };
+ }
- if (serverInfo[0].isUpgrading) {
- createLog(
- "error",
- "lst",
- "serverUpdater",
- `Looks like ${serverInfo[0].plantToken} is upgrading already you cant do this again.`
- );
- return {
- success: false,
- message: `Looks like ${serverInfo[0].plantToken} is upgrading already you cant do this again.`,
- };
- }
+ if (serverInfo[0].isUpgrading) {
+ createLog(
+ "error",
+ "lst",
+ "serverUpdater",
+ `Looks like ${serverInfo[0].plantToken} is upgrading already you cant do this again.`
+ );
+ return {
+ success: false,
+ message: `Looks like ${serverInfo[0].plantToken} is upgrading already you cant do this again.`,
+ };
+ }
- const scriptPath = `${process.env.DEVFOLDER}\\server\\scripts\\update.ps1 `;
- const args = [
- "-NoProfile",
- "-ExecutionPolicy",
- "Bypass",
- "-File",
- scriptPath,
- "-username",
- process.env.ADMUSER, // needs moved to somewhere else.
- "-admpass",
- process.env.ADMPASSWORD, // needs moved to somewhere else.
- "-devFolder",
- process.env.DEVFOLDER,
- "-server",
- serverInfo[0].serverDNS,
- "-serverIP",
- serverInfo[0].idAddress,
- "-token",
- serverInfo[0].plantToken,
- "-build",
- `${process.env.DEVFOLDER}\\builds`,
- "-location",
- serverInfo[0].serverLoc,
- "-obslst",
- serverInfo[0].oldVersion,
- "-obsBuild",
- app.admConfig.oldBuild,
- ,
- ];
+ const scriptPath = `${process.env.DEVFOLDER}\\server\\scripts\\update.ps1 `;
+ const args = [
+ "-NoProfile",
+ "-ExecutionPolicy",
+ "Bypass",
+ "-File",
+ scriptPath,
+ "-username",
+ process.env.ADMUSER, // needs moved to somewhere else.
+ "-admpass",
+ process.env.ADMPASSWORD, // needs moved to somewhere else.
+ "-devFolder",
+ process.env.DEVFOLDER,
+ "-server",
+ serverInfo[0].serverDNS,
+ "-serverIP",
+ serverInfo[0].idAddress,
+ "-token",
+ serverInfo[0].plantToken,
+ "-build",
+ `${process.env.DEVFOLDER}\\builds`,
+ "-location",
+ serverInfo[0].serverLoc,
+ "-obslst",
+ serverInfo[0].oldVersion,
+ "-obsBuild",
+ app.admConfig.oldBuild,
+ ,
+ ];
- return new Promise(async (resolve, reject) => {
- const process = spawn("powershell", args);
- // change the server to upgradeing
- await db
- .update(serverData)
- .set({isUpgrading: true})
- .where(eq(serverData.plantToken, server?.toLowerCase() ?? ""));
- //let stdout = "";
- //let stderr = "";
+ console.log(args);
- // Collect stdout data
- process.stdout.on("data", (data) => {
- const output = data.toString().trim();
- createLog("info", "lst", "serverUpdater", `${output}`);
- //onData(output);
- });
+ return new Promise(async (resolve, reject) => {
+ const process = spawn("powershell", args);
+ // change the server to upgradeing
+ await db
+ .update(serverData)
+ .set({ isUpgrading: true })
+ .where(eq(serverData.plantToken, server?.toLowerCase() ?? ""));
+ //let stdout = "";
+ //let stderr = "";
- // Collect stderr data
- process.stderr.on("data", (data) => {
- const output = data.toString().trim();
- createLog("info", "lst", "serverUpdater", `${output}`);
- //onData(output);
- });
-
- // Handle process close
- process.on("close", async (code) => {
- if (code === 0) {
- // if (count >= servers) {
- // //onClose(`Server completed with code: ${code}`);
- // }
- createLog("info", "lst", "serverUpdater", `${server}`);
-
- //update the last build.
- try {
- await db
- .update(serverData)
- .set({lastUpdated: sql`NOW()`, isUpgrading: false})
- .where(eq(serverData.plantToken, server?.toLowerCase() ?? ""));
- createLog(
- "info",
- "lst",
- "serverUpdater",
- `${server?.toLowerCase()}, has been updated and can now be used again.`
- );
- } catch (error) {
- createLog(
- "error",
- "lst",
- "serverUpdater",
- `There was an error updating the last time the server was updated: ${error}`
- );
- }
-
- resolve({
- success: true,
- message: `${server?.toLowerCase()}, has been updated and can now be used again.`,
- });
- } else {
- const errorMessage = `Process exited with code ${code}`;
-
- // if (count >= servers) {
- // //onClose(code);
- // }
-
- reject({
- success: false,
- message: `${server?.toLowerCase()}, Has encounted an error while updating.`,
- });
- }
- });
-
- // Handle errors with the process itself
- process.on("error", (error) => {
- //onError(err.message);
- createLog("error", "lst", "serverUpdater", `${error}`);
- reject(error);
- });
+ // Collect stdout data
+ process.stdout.on("data", (data) => {
+ const output = data.toString().trim();
+ createLog("info", "lst", "serverUpdater", `${output}`);
+ //onData(output);
});
+
+ // Collect stderr data
+ process.stderr.on("data", (data) => {
+ const output = data.toString().trim();
+ createLog("info", "lst", "serverUpdater", `${output}`);
+ //onData(output);
+ });
+
+ // Handle process close
+ process.on("close", async (code) => {
+ if (code === 0) {
+ // if (count >= servers) {
+ // //onClose(`Server completed with code: ${code}`);
+ // }
+ createLog("info", "lst", "serverUpdater", `${server}`);
+
+ //update the last build.
+ try {
+ await db
+ .update(serverData)
+ .set({ lastUpdated: sql`NOW()`, isUpgrading: false })
+ .where(eq(serverData.plantToken, server?.toLowerCase() ?? ""));
+ createLog(
+ "info",
+ "lst",
+ "serverUpdater",
+ `${server?.toLowerCase()}, has been updated and can now be used again.`
+ );
+ } catch (error) {
+ createLog(
+ "error",
+ "lst",
+ "serverUpdater",
+ `There was an error updating the last time the server was updated: ${error}`
+ );
+ }
+
+ resolve({
+ success: true,
+ message: `${server?.toLowerCase()}, has been updated and can now be used again.`,
+ });
+ } else {
+ const errorMessage = `Process exited with code ${code}`;
+
+ // if (count >= servers) {
+ // //onClose(code);
+ // }
+
+ reject({
+ success: false,
+ message: `${server?.toLowerCase()}, Has encounted an error while updating.`,
+ });
+ }
+ });
+
+ // Handle errors with the process itself
+ process.on("error", (error) => {
+ //onError(err.message);
+ createLog("error", "lst", "serverUpdater", `${error}`);
+ reject(error);
+ });
+ });
};
export async function processAllServers(devApp: string) {
- const servers = await db.select().from(serverData);
+ const servers = await db.select().from(serverData);
- createLog("info", "lst", "serverUpdater", `Running the update on all servers`);
- let count = 1;
- for (const server of servers) {
- try {
- const updateToServer = await updateServer(devApp, server.plantToken);
- createLog("info", "lst", "serverUpdater", `${server.sName} was updated.`);
- count = count + 1;
+ createLog(
+ "info",
+ "lst",
+ "serverUpdater",
+ `Running the update on all servers`
+ );
+ let count = 1;
+ for (const server of servers) {
+ try {
+ const updateToServer = await updateServer(devApp, server.plantToken);
+ createLog("info", "lst", "serverUpdater", `${server.sName} was updated.`);
+ count = count + 1;
- //return {success: true, message: `${server.sName} was updated.`, data: updateToServer};
- } catch (error: any) {
- createLog("info", "lst", "serverUpdater", `Error updating ${server.sName}: ${error.message}`);
- //return {success: false, message: `Error updating ${server.sName}: ${error.message}`};
- }
+ //return {success: true, message: `${server.sName} was updated.`, data: updateToServer};
+ } catch (error: any) {
+ createLog(
+ "info",
+ "lst",
+ "serverUpdater",
+ `Error updating ${server.sName}: ${error.message}`
+ );
+ //return {success: false, message: `Error updating ${server.sName}: ${error.message}`};
}
+ }
}
diff --git a/server/scripts/zipUpBuild.ts b/server/scripts/zipUpBuild.ts
index e45651c..6b80a50 100644
--- a/server/scripts/zipUpBuild.ts
+++ b/server/scripts/zipUpBuild.ts
@@ -99,7 +99,7 @@ const updateBuildNumber = (appLock: string) => {
// Auto-commit changes
execSync("git add package.json");
execSync(
- `git commit -m "build: bump build number to ${pkgJson.admConfig.build}"`
+ `git commit -m "chore(release): bump build number to ${pkgJson.admConfig.build}"`
);
} else {
createLog(
diff --git a/server/services/ocme/controller/cycleCount/ocmeInventory.ts b/server/services/ocme/controller/cycleCount/ocmeInventory.ts
index 964d2f3..8e2e024 100644
--- a/server/services/ocme/controller/cycleCount/ocmeInventory.ts
+++ b/server/services/ocme/controller/cycleCount/ocmeInventory.ts
@@ -1,16 +1,21 @@
import axios from "axios";
export const ocmeInv = async (data: any) => {
- try {
- const res = await axios.post(
- "http://usday1vms010:3250/api/v1/getLaneData",
- {lane: data.lane, laneType: data.laneType},
- {headers: {"Content-Type": "application/json", Connection: "keep-alive"}}
- );
- // console.log(res.data.data);
+ try {
+ const res = await axios.post(
+ "http://usday1vms010:3250/api/v1/getlanedata",
+ { lane: data.lane, laneType: data.laneType },
+ {
+ headers: {
+ "Content-Type": "application/json",
+ Connection: "keep-alive",
+ },
+ }
+ );
+ // console.log(res.data.data);
- return res.data.data;
- } catch (error: any) {
- console.log(error.code);
- }
+ return res.data.data;
+ } catch (error: any) {
+ console.log(error.code);
+ }
};
diff --git a/server/services/ocme/controller/postRunningNr.ts b/server/services/ocme/controller/postRunningNr.ts
index 897b2ad..79aa903 100644
--- a/server/services/ocme/controller/postRunningNr.ts
+++ b/server/services/ocme/controller/postRunningNr.ts
@@ -1,43 +1,67 @@
-import {db} from "../../../../database/dbclient.js";
-import {ocmeData} from "../../../../database/schema/ocme.js";
-import {createSSCC} from "../../../globalUtils/createSSCC.js";
-import {createLog} from "../../logger/logger.js";
-import {query} from "../../sqlServer/prodSqlServer.js";
-import {labelData} from "../../sqlServer/querys/materialHelpers/labelInfo.js";
+import { db } from "../../../../database/dbclient.js";
+import { ocmeData } from "../../../../database/schema/ocme.js";
+import { createSSCC } from "../../../globalUtils/createSSCC.js";
+import { createLog } from "../../logger/logger.js";
+import { query } from "../../sqlServer/prodSqlServer.js";
+import { labelData } from "../../sqlServer/querys/materialHelpers/labelInfo.js";
export const postLabelData = async (data: any) => {
- // if we have sscc we will do everything here and ignore the rn even it its sent over
- if (data.sscc && !data.runningNr) {
- data.runningNr = data.sscc.slice(10, -1);
- }
-
- if (!data.sscc && !data.runningNr) {
- // data.runningNr = data.sscc.slice(10, -1);
- return {success: false, message: "Missing data please try again", data: []};
- }
-
- let label;
- const filterQuery = labelData.replaceAll("[rn]", data.runningNr);
-
- try {
- label = await query(filterQuery, "Label data");
- } catch (error) {
- createLog("error", "ocme", "ocme", "There was an error getting the labelData");
- }
- const newPost = {
- sscc: data.sscc ? data.sscc : await createSSCC(data.runningNr),
- runningNr: data.runningNr,
- completed: data.completed,
- lineNum: label[0].machineLocation,
- areaFrom: data.areaFrom,
- pickedUp: false,
+ console.log(data);
+ let newData = data;
+ if (Array.isArray(data)) {
+ newData = {
+ sscc: data[1],
+ areaFrom: data[0],
+ completed: true,
};
+ }
- try {
- const enterNewData = await db.insert(ocmeData).values(newPost).returning({sscc: ocmeData.sscc});
- return {success: true, message: "Data was posted to ocme info", data: enterNewData};
- } catch (error) {
- console.log(error);
- return {success: false, message: "Data was posted to ocme info", data: newPost};
- }
+ if (newData.sscc && !newData.runningNr) {
+ newData.runningNr = newData.sscc.slice(10, -1);
+ }
+ if (!newData.sscc && !newData.runningNr) {
+ return {
+ success: false,
+ message: "Missing data please try again",
+ data: [],
+ };
+ }
+ let label;
+ const filterQuery = labelData.replaceAll("[rn]", newData.runningNr);
+ try {
+ label = await query(filterQuery, "Label data");
+ } catch (error) {
+ createLog(
+ "error",
+ "ocme",
+ "ocme",
+ "There was an error getting the labelData"
+ );
+ }
+ const newPost = {
+ sscc: newData.sscc ? newData.sscc : await createSSCC(newData.runningNr),
+ runningNr: newData.runningNr,
+ completed: newData.completed,
+ lineNum: label[0].machineLocation,
+ areaFrom: newData.areaFrom,
+ pickedUp: false,
+ };
+ try {
+ const enterNewData = await db
+ .insert(ocmeData)
+ .values(newPost)
+ .returning({ sscc: ocmeData.sscc });
+ return {
+ success: true,
+ message: "Data was posted to ocme info",
+ data: enterNewData,
+ };
+ } catch (error) {
+ console.log(error);
+ return {
+ success: false,
+ message: "Data was posted to ocme info",
+ data: newPost,
+ };
+ }
};
diff --git a/server/services/ocme/route/cycleCount.ts b/server/services/ocme/route/cycleCount.ts
index e045db3..903f750 100644
--- a/server/services/ocme/route/cycleCount.ts
+++ b/server/services/ocme/route/cycleCount.ts
@@ -1,60 +1,71 @@
-import {createRoute, OpenAPIHono, z} from "@hono/zod-openapi";
+import { createRoute, OpenAPIHono, z } from "@hono/zod-openapi";
-import {apiHit} from "../../../globalUtils/apiHits.js";
-import {responses} from "../../../globalUtils/routeDefs/responses.js";
-import {authMiddleware} from "../../auth/middleware/authMiddleware.js";
-import {cycleCount} from "../controller/cycleCount.js";
-import type {User} from "../../../types/users.js";
-import {verify} from "hono/jwt";
+import { apiHit } from "../../../globalUtils/apiHits.js";
+import { responses } from "../../../globalUtils/routeDefs/responses.js";
+import { authMiddleware } from "../../auth/middleware/authMiddleware.js";
+import { cycleCount } from "../controller/cycleCount.js";
+import type { User } from "../../../types/users.js";
+import { verify } from "hono/jwt";
-const app = new OpenAPIHono({strict: false});
+const app = new OpenAPIHono({ strict: false });
const AddSetting = z.object({
- lane: z.string().openapi({example: "L064"}),
+ lane: z.string().openapi({ example: "L064" }),
});
app.openapi(
- createRoute({
- tags: ["ocme"],
- summary: "Cycle counts a lane based on the lane Alias",
- method: "post",
- path: "/cyclecount",
- middleware: authMiddleware,
- request: {
- body: {
- content: {
- "application/json": {schema: AddSetting},
- },
- },
+ createRoute({
+ tags: ["ocme"],
+ summary: "Cycle counts a lane based on the lane Alias",
+ method: "post",
+ path: "/cycleCount",
+ middleware: authMiddleware,
+ request: {
+ body: {
+ content: {
+ "application/json": { schema: AddSetting },
},
- responses: responses(),
- }),
- async (c) => {
- apiHit(c, {endpoint: "api/auth/register"});
- // make sure we have a vaid user being accessed thats really logged in
- const body = await c.req.json();
+ },
+ },
+ responses: responses(),
+ }),
+ async (c) => {
+ apiHit(c, { endpoint: "api/auth/register" });
+ // make sure we have a vaid user being accessed thats really logged in
+ const body = await c.req.json();
- const authHeader = c.req.header("Authorization");
+ const authHeader = c.req.header("Authorization");
- const token = authHeader?.split("Bearer ")[1] || "";
- let user: User;
+ const token = authHeader?.split("Bearer ")[1] || "";
+ let user: User;
- try {
- const payload = await verify(token, process.env.JWT_SECRET!);
- user = payload.user as User;
- } catch (error) {
- return c.json({message: "Unauthorized"}, 401);
- }
-
- try {
- const cycleData = await cycleCount(body, user);
- return c.json({success: true, message: `${body.lane} was just cycle counted.`, data: cycleData}, 200);
- } catch (error) {
- return c.json(
- {success: false, message: `There was an error cycle counting ${body.lane}`, data: error},
- 400
- );
- }
+ try {
+ const payload = await verify(token, process.env.JWT_SECRET!);
+ user = payload.user as User;
+ } catch (error) {
+ return c.json({ message: "Unauthorized" }, 401);
}
+
+ try {
+ const cycleData = await cycleCount(body, user);
+ return c.json(
+ {
+ success: true,
+ message: `${body.lane} was just cycle counted.`,
+ data: cycleData,
+ },
+ 200
+ );
+ } catch (error) {
+ return c.json(
+ {
+ success: false,
+ message: `There was an error cycle counting ${body.lane}`,
+ data: error,
+ },
+ 400
+ );
+ }
+ }
);
export default app;
diff --git a/server/services/ocme/route/getInfo.ts b/server/services/ocme/route/getInfo.ts
index a65b71d..8d33f27 100644
--- a/server/services/ocme/route/getInfo.ts
+++ b/server/services/ocme/route/getInfo.ts
@@ -1,81 +1,96 @@
-import {createRoute, OpenAPIHono, z} from "@hono/zod-openapi";
-import {getInfo} from "../controller/getInfo.js";
-import {apiHit} from "../../../globalUtils/apiHits.js";
+import { createRoute, OpenAPIHono, z } from "@hono/zod-openapi";
+import { getInfo } from "../controller/getInfo.js";
+import { apiHit } from "../../../globalUtils/apiHits.js";
-const app = new OpenAPIHono({strict: false});
+const app = new OpenAPIHono({ strict: false });
const AddSetting = z.object({
- name: z.string().openapi({example: "server"}),
- value: z.string().openapi({example: "localhost"}),
- description: z.string().openapi({example: "The server we are going to connect to"}),
- roles: z.string().openapi({example: "admin"}),
- module: z.string().openapi({example: "production"}),
+ name: z.string().openapi({ example: "server" }),
+ value: z.string().openapi({ example: "localhost" }),
+ description: z
+ .string()
+ .openapi({ example: "The server we are going to connect to" }),
+ roles: z.string().openapi({ example: "admin" }),
+ module: z.string().openapi({ example: "production" }),
});
app.openapi(
- createRoute({
- tags: ["ocme"],
- summary: "Get all current info",
- method: "get",
- path: "/getinfo",
- request: {
- body: {
- content: {
- "application/json": {schema: AddSetting},
- },
- },
+ createRoute({
+ tags: ["ocme"],
+ summary: "Get all current info",
+ method: "get",
+ path: "/getInfo",
+ request: {
+ body: {
+ content: {
+ "application/json": { schema: AddSetting },
},
- responses: {
- 200: {
- content: {
- "application/json": {
- schema: z.object({
- success: z.boolean().openapi({example: true}),
- message: z.string().openapi({example: "Starter"}),
- data: z.array(z.object({})).optional().openapi({example: []}),
- }),
- },
- },
- description: "Response message",
- },
- 400: {
- content: {
- "application/json": {
- schema: z.object({
- success: z.boolean().openapi({example: false}),
- message: z.string().optional().openapi({example: "Internal Server error"}),
- data: z.array(z.object({})).optional().openapi({example: []}),
- }),
- },
- },
- description: "Internal Server Error",
- },
- // 401: {
- // content: {
- // "application/json": {
- // schema: z.object({message: z.string().optional().openapi({example: "Unauthenticated"})}),
- // },
- // },
- // description: "Unauthorized",
- // },
- // 500: {
- // content: {
- // "application/json": {
- // schema: z.object({message: z.string().optional().openapi({example: "Internal Server error"})}),
- // },
- // },
- // description: "Internal Server Error",
- // },
+ },
+ },
+ responses: {
+ 200: {
+ content: {
+ "application/json": {
+ schema: z.object({
+ success: z.boolean().openapi({ example: true }),
+ message: z.string().openapi({ example: "Starter" }),
+ data: z.array(z.object({})).optional().openapi({ example: [] }),
+ }),
+ },
},
- }),
- async (c) => {
- // make sure we have a vaid user being accessed thats really logged in
- apiHit(c, {endpoint: "api/auth/register"});
- try {
- return c.json({success: true, message: "Ocme Info", data: await getInfo()}, 200);
- } catch (error) {
- return c.json({success: false, message: "There was an error getting ocmeInfo data", data: error}, 400);
- }
+ description: "Response message",
+ },
+ 400: {
+ content: {
+ "application/json": {
+ schema: z.object({
+ success: z.boolean().openapi({ example: false }),
+ message: z
+ .string()
+ .optional()
+ .openapi({ example: "Internal Server error" }),
+ data: z.array(z.object({})).optional().openapi({ example: [] }),
+ }),
+ },
+ },
+ description: "Internal Server Error",
+ },
+ // 401: {
+ // content: {
+ // "application/json": {
+ // schema: z.object({message: z.string().optional().openapi({example: "Unauthenticated"})}),
+ // },
+ // },
+ // description: "Unauthorized",
+ // },
+ // 500: {
+ // content: {
+ // "application/json": {
+ // schema: z.object({message: z.string().optional().openapi({example: "Internal Server error"})}),
+ // },
+ // },
+ // description: "Internal Server Error",
+ // },
+ },
+ }),
+ async (c) => {
+ // make sure we have a vaid user being accessed thats really logged in
+ apiHit(c, { endpoint: "api/auth/register" });
+ try {
+ return c.json(
+ { success: true, message: "Ocme Info", data: await getInfo() },
+ 200
+ );
+ } catch (error) {
+ return c.json(
+ {
+ success: false,
+ message: "There was an error getting ocmeInfo data",
+ data: error,
+ },
+ 400
+ );
}
+ }
);
export default app;
diff --git a/server/services/ocme/route/getShipmentPallets.ts b/server/services/ocme/route/getShipmentPallets.ts
index ddcfb0a..32e727d 100644
--- a/server/services/ocme/route/getShipmentPallets.ts
+++ b/server/services/ocme/route/getShipmentPallets.ts
@@ -1,94 +1,114 @@
-import {createRoute, OpenAPIHono, z} from "@hono/zod-openapi";
-import {apiHit} from "../../../globalUtils/apiHits.js";
-import {getShipmentPallets} from "../controller/getShipmentPallets.js";
+import { createRoute, OpenAPIHono, z } from "@hono/zod-openapi";
+import { apiHit } from "../../../globalUtils/apiHits.js";
+import { getShipmentPallets } from "../controller/getShipmentPallets.js";
const app = new OpenAPIHono();
const ShipmentID = z.object({
- shipmentID: z.string().optional().openapi({example: "14558"}),
+ shipmentID: z.string().optional().openapi({ example: "14558" }),
});
app.openapi(
- createRoute({
- tags: ["ocme"],
- summary: "Post New running number to be picked up.",
- method: "post",
- path: "/getshipmentpallets",
- request: {
- body: {
- content: {
- "application/json": {schema: ShipmentID},
- },
- },
+ createRoute({
+ tags: ["ocme"],
+ summary: "Post New running number to be picked up.",
+ method: "post",
+ path: "/GetShipmentPallets",
+ request: {
+ body: {
+ content: {
+ "application/json": { schema: ShipmentID },
},
- responses: {
- 200: {
- content: {
- "application/json": {
- schema: z.object({
- success: z.boolean().openapi({example: true}),
- message: z.string().openapi({example: "Starter"}),
- // data: z
- // .array(z.object({sscc: z.string().optional()}))
- // .optional()
- // .openapi({example: []}),
- }),
- },
- },
- description: "Response message",
- },
- 400: {
- content: {
- "application/json": {
- schema: z.object({
- success: z.boolean().openapi({example: false}),
- message: z.string().optional().openapi({example: "Internal Server error"}),
- data: z.array(z.object({})).optional().openapi({example: []}),
- }),
- },
- },
- description: "Internal Server Error",
- },
- // 401: {
- // content: {
- // "application/json": {
- // schema: z.object({message: z.string().optional().openapi({example: "Unauthenticated"})}),
- // },
- // },
- // description: "Unauthorized",
- // },
- // 500: {
- // content: {
- // "application/json": {
- // schema: z.object({message: z.string().optional().openapi({example: "Internal Server error"})}),
- // },
- // },
- // description: "Internal Server Error",
- // },
+ },
+ },
+ responses: {
+ 200: {
+ content: {
+ "application/json": {
+ schema: z.object({
+ success: z.boolean().openapi({ example: true }),
+ message: z.string().openapi({ example: "Starter" }),
+ // data: z
+ // .array(z.object({sscc: z.string().optional()}))
+ // .optional()
+ // .openapi({example: []}),
+ }),
+ },
},
- }),
- async (c) => {
- // make sure we have a vaid user being accessed thats really logged in
- try {
- const data = await c.req.json();
- apiHit(c, {endpoint: "api/ocme/getshipmentpallets", lastBody: data});
+ description: "Response message",
+ },
+ 400: {
+ content: {
+ "application/json": {
+ schema: z.object({
+ success: z.boolean().openapi({ example: false }),
+ message: z
+ .string()
+ .optional()
+ .openapi({ example: "Internal Server error" }),
+ data: z.array(z.object({})).optional().openapi({ example: [] }),
+ }),
+ },
+ },
+ description: "Internal Server Error",
+ },
+ // 401: {
+ // content: {
+ // "application/json": {
+ // schema: z.object({message: z.string().optional().openapi({example: "Unauthenticated"})}),
+ // },
+ // },
+ // description: "Unauthorized",
+ // },
+ // 500: {
+ // content: {
+ // "application/json": {
+ // schema: z.object({message: z.string().optional().openapi({example: "Internal Server error"})}),
+ // },
+ // },
+ // description: "Internal Server Error",
+ // },
+ },
+ }),
+ async (c) => {
+ // make sure we have a vaid user being accessed thats really logged in
+ try {
+ const data = await c.req.json();
+ apiHit(c, { endpoint: "api/ocme/getshipmentpallets", lastBody: data });
- if (!data.shipmentID) {
- return c.json(
- {success: false, message: "You are missing the shipment id please try again.", data: []},
- 400
- );
- }
+ console.log;
- const shiptmentData = await getShipmentPallets(data.shipmentID);
+ if (!data.shipmentID) {
+ return c.json(
+ {
+ success: false,
+ message: "You are missing the shipment id please try again.",
+ data: [],
+ },
+ 400
+ );
+ }
- return c.json(
- {success: shiptmentData.success, message: shiptmentData.message, data: shiptmentData.data ?? []},
- 200
- );
- } catch (error) {
- return c.json({success: false, message: "There was an error getting the shipment data.", data: error}, 400);
- }
+ const shiptmentData = await getShipmentPallets(data.shipmentID);
+
+ return c.json(
+ {
+ success: shiptmentData.success,
+ message: shiptmentData.message,
+ data: shiptmentData.data ?? [],
+ },
+ 200
+ );
+ } catch (error) {
+ return c.json(
+ {
+ success: false,
+ message: "There was an error getting the shipment data.",
+ data: error,
+ },
+ 400
+ );
}
+ }
);
export default app;
diff --git a/server/services/ocme/route/pickedUp.ts b/server/services/ocme/route/pickedUp.ts
index 6d7ef88..856a8e4 100644
--- a/server/services/ocme/route/pickedUp.ts
+++ b/server/services/ocme/route/pickedUp.ts
@@ -1,89 +1,114 @@
-import {createRoute, OpenAPIHono, z} from "@hono/zod-openapi";
-import {postLabelData} from "../controller/postRunningNr.js";
-import {apiHit} from "../../../globalUtils/apiHits.js";
-import {pickedup} from "../controller/pickedup.js";
+import { createRoute, OpenAPIHono, z } from "@hono/zod-openapi";
+import { postLabelData } from "../controller/postRunningNr.js";
+import { apiHit } from "../../../globalUtils/apiHits.js";
+import { pickedup } from "../controller/pickedup.js";
const app = new OpenAPIHono();
const PostRunningNr = z.object({
- sscc: z.string().optional().openapi({example: "00090103830005710997"}),
- runningNr: z.string().optional().openapi({example: "localhost"}),
- areaFrom: z.string().optional().openapi({example: "The server we are going to connect to"}),
- completed: z.boolean().optional().openapi({example: true}),
- all: z.boolean().optional().openapi({example: false}),
+ sscc: z.string().optional().openapi({ example: "00090103830005710997" }),
+ runningNr: z.string().optional().openapi({ example: "localhost" }),
+ areaFrom: z
+ .string()
+ .optional()
+ .openapi({ example: "The server we are going to connect to" }),
+ completed: z.boolean().optional().openapi({ example: true }),
+ all: z.boolean().optional().openapi({ example: false }),
});
app.openapi(
- createRoute({
- tags: ["ocme"],
- summary: "Picks up a pallet in the system.",
- method: "patch",
- description:
- "removes the pallet(s) from showing as needed to be picked up, we clear everything related to the pallet number to reduce the risk of a mix, passing `all` will just clear everything that is pending.",
- path: "/pickedup",
- request: {
- body: {
- content: {
- "application/json": {schema: PostRunningNr},
- },
- },
+ createRoute({
+ tags: ["ocme"],
+ summary: "Picks up a pallet in the system.",
+ method: "patch",
+ description:
+ "removes the pallet(s) from showing as needed to be picked up, we clear everything related to the pallet number to reduce the risk of a mix, passing `all` will just clear everything that is pending.",
+ path: "/pickedUp",
+ request: {
+ body: {
+ content: {
+ "application/json": { schema: PostRunningNr },
},
- responses: {
- 200: {
- content: {
- "application/json": {
- schema: z.object({
- success: z.boolean().openapi({example: true}),
- message: z.string().openapi({example: "Starter"}),
- // data: z
- // .array(z.object({sscc: z.string().optional()}))
- // .optional()
- // .openapi({example: []}),
- }),
- },
- },
- description: "Response message",
- },
- 400: {
- content: {
- "application/json": {
- schema: z.object({
- success: z.boolean().openapi({example: false}),
- message: z.string().optional().openapi({example: "Internal Server error"}),
- data: z.array(z.object({})).optional().openapi({example: []}),
- }),
- },
- },
- description: "Internal Server Error",
- },
- // 401: {
- // content: {
- // "application/json": {
- // schema: z.object({message: z.string().optional().openapi({example: "Unauthenticated"})}),
- // },
- // },
- // description: "Unauthorized",
- // },
- 500: {
- content: {
- "application/json": {
- schema: z.object({message: z.string().optional().openapi({example: "Internal Server error"})}),
- },
- },
- description: "Internal Server Error",
- },
+ },
+ },
+ responses: {
+ 200: {
+ content: {
+ "application/json": {
+ schema: z.object({
+ success: z.boolean().openapi({ example: true }),
+ message: z.string().openapi({ example: "Starter" }),
+ // data: z
+ // .array(z.object({sscc: z.string().optional()}))
+ // .optional()
+ // .openapi({example: []}),
+ }),
+ },
},
- }),
- async (c) => {
- // make sure we have a vaid user being accessed thats really logged in
- try {
- const data = await c.req.json();
- apiHit(c, {endpoint: "api/ocme/pickedup", lastBody: data});
- const postPallet = await pickedup(data);
- return c.json({success: postPallet.success, message: postPallet.message, data: postPallet.data}, 200);
- } catch (error) {
- return c.json({success: false, message: "There was an error getting ocmeInfo data", data: error}, 400);
- }
+ description: "Response message",
+ },
+ 400: {
+ content: {
+ "application/json": {
+ schema: z.object({
+ success: z.boolean().openapi({ example: false }),
+ message: z
+ .string()
+ .optional()
+ .openapi({ example: "Internal Server error" }),
+ data: z.array(z.object({})).optional().openapi({ example: [] }),
+ }),
+ },
+ },
+ description: "Internal Server Error",
+ },
+ // 401: {
+ // content: {
+ // "application/json": {
+ // schema: z.object({message: z.string().optional().openapi({example: "Unauthenticated"})}),
+ // },
+ // },
+ // description: "Unauthorized",
+ // },
+ 500: {
+ content: {
+ "application/json": {
+ schema: z.object({
+ message: z
+ .string()
+ .optional()
+ .openapi({ example: "Internal Server error" }),
+ }),
+ },
+ },
+ description: "Internal Server Error",
+ },
+ },
+ }),
+ async (c) => {
+ // make sure we have a vaid user being accessed thats really logged in
+ try {
+ const data = await c.req.json();
+ apiHit(c, { endpoint: "api/ocme/pickedup", lastBody: data });
+ const postPallet = await pickedup(data);
+ return c.json(
+ {
+ success: postPallet.success,
+ message: postPallet.message,
+ data: postPallet.data,
+ },
+ 200
+ );
+ } catch (error) {
+ return c.json(
+ {
+ success: false,
+ message: "There was an error getting ocmeInfo data",
+ data: error,
+ },
+ 400
+ );
}
+ }
);
export default app;
diff --git a/server/services/ocme/route/postRunningNumber.ts b/server/services/ocme/route/postRunningNumber.ts
index 1c8721d..4afe104 100644
--- a/server/services/ocme/route/postRunningNumber.ts
+++ b/server/services/ocme/route/postRunningNumber.ts
@@ -1,86 +1,106 @@
-import {createRoute, OpenAPIHono, z} from "@hono/zod-openapi";
-import {getInfo} from "../controller/getInfo.js";
-import {postLabelData} from "../controller/postRunningNr.js";
-import {apiHit} from "../../../globalUtils/apiHits.js";
+import { createRoute, OpenAPIHono, z } from "@hono/zod-openapi";
+import { getInfo } from "../controller/getInfo.js";
+import { postLabelData } from "../controller/postRunningNr.js";
+import { apiHit } from "../../../globalUtils/apiHits.js";
const app = new OpenAPIHono();
const PostRunningNr = z.object({
- sscc: z.string().optional().openapi({example: "00090103830005710997"}),
- runningNr: z.string().optional().openapi({example: "localhost"}),
- areaFrom: z.string().optional().openapi({example: "The server we are going to connect to"}),
- completed: z.boolean().optional().openapi({example: true}),
+ sscc: z.string().optional().openapi({ example: "00090103830005710997" }),
+ runningNr: z.string().optional().openapi({ example: "localhost" }),
+ areaFrom: z
+ .string()
+ .optional()
+ .openapi({ example: "The server we are going to connect to" }),
+ completed: z.boolean().optional().openapi({ example: true }),
});
app.openapi(
- createRoute({
- tags: ["ocme"],
- summary: "Post New running number to be picked up.",
- method: "post",
- path: "/postrunningnumber",
- request: {
- body: {
- content: {
- "application/json": {schema: PostRunningNr},
- },
- },
+ createRoute({
+ tags: ["ocme"],
+ summary: "Post New running number to be picked up.",
+ method: "post",
+ path: "/postRunningNumber",
+ request: {
+ body: {
+ content: {
+ "application/json": { schema: PostRunningNr },
},
- responses: {
- 200: {
- content: {
- "application/json": {
- schema: z.object({
- success: z.boolean().openapi({example: true}),
- message: z.string().openapi({example: "Starter"}),
- // data: z
- // .array(z.object({sscc: z.string().optional()}))
- // .optional()
- // .openapi({example: []}),
- }),
- },
- },
- description: "Response message",
- },
- 400: {
- content: {
- "application/json": {
- schema: z.object({
- success: z.boolean().openapi({example: false}),
- message: z.string().optional().openapi({example: "Internal Server error"}),
- data: z.array(z.object({})).optional().openapi({example: []}),
- }),
- },
- },
- description: "Internal Server Error",
- },
- // 401: {
- // content: {
- // "application/json": {
- // schema: z.object({message: z.string().optional().openapi({example: "Unauthenticated"})}),
- // },
- // },
- // description: "Unauthorized",
- // },
- // 500: {
- // content: {
- // "application/json": {
- // schema: z.object({message: z.string().optional().openapi({example: "Internal Server error"})}),
- // },
- // },
- // description: "Internal Server Error",
- // },
+ },
+ },
+ responses: {
+ 200: {
+ content: {
+ "application/json": {
+ schema: z.object({
+ success: z.boolean().openapi({ example: true }),
+ message: z.string().openapi({ example: "Starter" }),
+ // data: z
+ // .array(z.object({sscc: z.string().optional()}))
+ // .optional()
+ // .openapi({example: []}),
+ }),
+ },
},
- }),
- async (c) => {
- // make sure we have a vaid user being accessed thats really logged in
- try {
- const data = await c.req.json();
- apiHit(c, {endpoint: "api/ocme/postRunningNumber", lastBody: data});
- const postPallet = await postLabelData(data);
- return c.json({success: postPallet.success, message: postPallet.message, data: postPallet.data ?? []}, 200);
- } catch (error) {
- return c.json({success: false, message: "There was an error getting ocmeInfo data", data: error}, 400);
- }
+ description: "Response message",
+ },
+ 400: {
+ content: {
+ "application/json": {
+ schema: z.object({
+ success: z.boolean().openapi({ example: false }),
+ message: z
+ .string()
+ .optional()
+ .openapi({ example: "Internal Server error" }),
+ data: z.array(z.object({})).optional().openapi({ example: [] }),
+ }),
+ },
+ },
+ description: "Internal Server Error",
+ },
+ // 401: {
+ // content: {
+ // "application/json": {
+ // schema: z.object({message: z.string().optional().openapi({example: "Unauthenticated"})}),
+ // },
+ // },
+ // description: "Unauthorized",
+ // },
+ // 500: {
+ // content: {
+ // "application/json": {
+ // schema: z.object({message: z.string().optional().openapi({example: "Internal Server error"})}),
+ // },
+ // },
+ // description: "Internal Server Error",
+ // },
+ },
+ }),
+ async (c) => {
+ // make sure we have a vaid user being accessed thats really logged in
+ try {
+ const data = await c.req.json();
+ apiHit(c, { endpoint: "api/ocme/postRunningNumber", lastBody: data });
+ const postPallet = await postLabelData(data);
+ return c.json(
+ {
+ success: postPallet.success,
+ message: postPallet.message,
+ data: postPallet.data ?? [],
+ },
+ 200
+ );
+ } catch (error) {
+ return c.json(
+ {
+ success: false,
+ message: "There was an error getting ocmeInfo data",
+ data: error,
+ },
+ 400
+ );
}
+ }
);
export default app;
diff --git a/server/services/tcpServer/tcpServer.ts b/server/services/tcpServer/tcpServer.ts
index 25a1c2b..4d5d06f 100644
--- a/server/services/tcpServer/tcpServer.ts
+++ b/server/services/tcpServer/tcpServer.ts
@@ -1,64 +1,79 @@
import net from "net";
-import {OpenAPIHono} from "@hono/zod-openapi";
-import {createLog} from "../logger/logger.js";
+import { OpenAPIHono } from "@hono/zod-openapi";
+import { createLog } from "../logger/logger.js";
import startTCP from "./route/startServer.js";
import stopTCP from "./route/stopServer.js";
import restartTCP from "./route/restartServer.js";
-import {db} from "../../../database/dbclient.js";
-import {settings} from "../../../database/schema/settings.js";
-import {eq} from "drizzle-orm";
+import { db } from "../../../database/dbclient.js";
+import { settings } from "../../../database/schema/settings.js";
+import { eq } from "drizzle-orm";
+import { postLabelData } from "../ocme/controller/postRunningNr.js";
let tcpServer: net.Server;
let tcpSockets: Set = new Set();
let isServerRunning = false;
-const tcpPort = await db.select().from(settings).where(eq(settings.name, "tcpPort"));
+const tcpPort = await db
+ .select()
+ .from(settings)
+ .where(eq(settings.name, "tcpPort"));
const app = new OpenAPIHono();
export const startTCPServer = () => {
- if (isServerRunning) return {success: false, message: "Server is already running"};
+ if (isServerRunning)
+ return { success: false, message: "Server is already running" };
- tcpServer = net.createServer((socket) => {
- console.log("Client connected");
+ tcpServer = net.createServer((socket) => {
+ console.log("Client connected");
- tcpSockets.add(socket);
- socket.on("data", (data: Buffer) => {
- console.log("Received:", data.toString());
- socket.write("Message received");
- });
-
- socket.on("end", () => {
- console.log("Client disconnected");
- tcpSockets.delete(socket);
- });
-
- socket.on("error", (err: Error) => {
- console.error("Socket error:", err);
- tcpSockets.delete(socket);
- });
+ tcpSockets.add(socket);
+ socket.on("data", (data: Buffer) => {
+ console.log("Received:", data.toString());
+ const parseData = data.toString("utf-8").trimEnd().split(" ");
+ if (parseData[0] === "HB") {
+ return;
+ }
+ postLabelData(parseData);
});
- tcpServer.listen(tcpPort[0]?.value ?? 2222, () => {
- createLog("info", "lst", "tcp", `TCP Server listening on port ${tcpPort[0]?.value ?? 2222}`);
+ socket.on("end", () => {
+ console.log("Client disconnected");
+ tcpSockets.delete(socket);
});
- isServerRunning = true;
- return {success: true, message: "TCP Server started"};
+ socket.on("error", (err: Error) => {
+ console.error("Socket error:", err);
+ tcpSockets.delete(socket);
+ });
+ });
+
+ tcpServer.listen(tcpPort[0]?.value ?? 2222, () => {
+ createLog(
+ "info",
+ "lst",
+ "tcp",
+ `TCP Server listening on port ${tcpPort[0]?.value ?? 2222}`
+ );
+ });
+
+ isServerRunning = true;
+ return { success: true, message: "TCP Server started" };
};
// Function to stop the TCP server
export const stopTCPServer = () => {
- if (!isServerRunning) return {success: false, message: "Server is not running"};
- for (const socket of tcpSockets) {
- socket.destroy();
- }
- tcpSockets.clear();
- tcpServer.close(() => {
- console.log("TCP Server stopped");
- });
- isServerRunning = false;
- return {success: true, message: "TCP Server stopped"};
+ if (!isServerRunning)
+ return { success: false, message: "Server is not running" };
+ for (const socket of tcpSockets) {
+ socket.destroy();
+ }
+ tcpSockets.clear();
+ tcpServer.close(() => {
+ console.log("TCP Server stopped");
+ });
+ isServerRunning = false;
+ return { success: true, message: "TCP Server stopped" };
};
app.route("/tcpserver/start", startTCP);
@@ -67,7 +82,7 @@ app.route("/tcpserver/restart", restartTCP);
// start the server after on system start up
setTimeout(() => {
- startTCPServer();
+ startTCPServer();
}, 5000);
export default app;