lots of changes with docker
All checks were successful
Build and Push LST Docker Image / docker (push) Successful in 2m57s

This commit is contained in:
2026-04-03 09:51:52 -05:00
parent 82ab735982
commit beae6eb648
36 changed files with 2284 additions and 36 deletions

View File

@@ -0,0 +1,6 @@
import { integer, pgTable, text } from "drizzle-orm/pg-core";
export const opendockApt = pgTable("printer_log", {
id: integer().primaryKey().generatedAlwaysAsIdentity(),
name: text("name").notNull(),
});

View File

@@ -9,6 +9,8 @@ import { tryCatch } from "../utils/trycatch.utils.js";
const r = Router();
r.get("/", async (req, res: Response) => {
const { userId } = req.query;
const hasPermissions = await auth.api.userHasPermission({
body: {
//userId: req?.user?.id,
@@ -24,7 +26,7 @@ r.get("/", async (req, res: Response) => {
.select()
.from(notificationSub)
.where(
!hasPermissions.success
userId || !hasPermissions.success
? eq(notificationSub.userId, `${req?.user?.id ?? ""}`)
: undefined,
),
@@ -47,7 +49,7 @@ r.get("/", async (req, res: Response) => {
level: "info",
module: "notification",
subModule: "post",
message: `Subscription deleted`,
message: `Subscriptions`,
data: data ?? [],
status: 200,
});

View File

@@ -0,0 +1,36 @@
/**
* the route that listens for the printers post.
*
* and http-post alert should be setup on each printer pointing to at min you will want to make the alert for
* pause printer, you can have all on here as it will also monitor and do things on all messages
*
* http://{serverIP}:2222/lst/api/ocp/printer/listener/{printerName}
*
* the messages will be sent over to the db for logging as well as specific ones will do something
*
* pause will validate if can print
* close head will repause the printer so it wont print a label
* power up will just repause the printer so it wont print a label
*/
import { Router } from "express";
import { apiReturn } from "../utils/returnHelper.utils.js";
const r = Router();
r.post("/printer/listener/:printer", async (req, res) => {
const { printer: printerName } = req.params;
console.log(req.body);
return apiReturn(res, {
success: true,
level: "info",
module: "ocp",
subModule: "printing",
message: `${printerName} just passed over a message`,
data: req.body ?? [],
status: 200,
});
});
export default r;

View File

@@ -0,0 +1,19 @@
/**
* this will do a prod sync, update or add alerts to the printer, validate the next pm intervale as well as head replacement.
*
* if a printer is upcoming on a pm or head replacement send to the plant to address.
*
* a trigger on the printer table will have the ability to run this as well
*
* heat beats on all assigned printers
*
* printer status will live here this will be how we manage all the levels of status like 3 paused, 1 printing, 8 error, 10 power up, etc...
*/
export const printerManager = async () => {};
export const printerHeartBeat = async () => {
// heat heats will be defaulted to 60 seconds no reason to allow anything else
};
//export const printerStatus = async (statusNr: number, printerId: number) => {};

22
backend/ocp/ocp.routes.ts Normal file
View File

@@ -0,0 +1,22 @@
import { type Express, Router } from "express";
import { requireAuth } from "../middleware/auth.middleware.js";
import { featureCheck } from "../middleware/featureActive.middleware.js";
import listener from "./ocp.printer.listener.js";
export const setupOCPRoutes = (baseUrl: string, app: Express) => {
//setup all the routes
const router = Router();
// is the feature even on?
router.use(featureCheck("ocp"));
// non auth routes up here
router.use(listener);
// auth routes below here
router.use(requireAuth);
//router.use("");
app.use(`${baseUrl}/api/ocp`, router);
};

View File

@@ -5,6 +5,7 @@ import { setupAuthRoutes } from "./auth/auth.routes.js";
import { setupApiDocsRoutes } from "./configs/scaler.config.js";
import { setupDatamartRoutes } from "./datamart/datamart.routes.js";
import { setupNotificationRoutes } from "./notification/notification.routes.js";
import { setupOCPRoutes } from "./ocp/ocp.routes.js";
import { setupOpendockRoutes } from "./opendock/opendock.routes.js";
import { setupProdSqlRoutes } from "./prodSql/prodSql.routes.js";
import { setupSystemRoutes } from "./system/system.routes.js";
@@ -20,4 +21,5 @@ export const setupRoutes = (baseUrl: string, app: Express) => {
setupUtilsRoutes(baseUrl, app);
setupOpendockRoutes(baseUrl, app);
setupNotificationRoutes(baseUrl, app);
setupOCPRoutes(baseUrl, app);
};

View File

@@ -9,7 +9,7 @@ const newSettings: NewSetting[] = [
{
name: "opendock_sync",
value: "0",
active: true,
active: false,
description: "Dock Scheduling system",
moduleName: "opendock",
settingType: "feature",
@@ -19,7 +19,7 @@ const newSettings: NewSetting[] = [
{
name: "ocp",
value: "1",
active: true,
active: false,
description: "One click print",
moduleName: "ocp",
settingType: "feature",
@@ -29,7 +29,7 @@ const newSettings: NewSetting[] = [
{
name: "ocme",
value: "0",
active: true,
active: false,
description: "Dayton Agv system",
moduleName: "ocme",
settingType: "feature",
@@ -39,7 +39,7 @@ const newSettings: NewSetting[] = [
{
name: "demandManagement",
value: "1",
active: true,
active: false,
description: "Fake EDI System",
moduleName: "demandManagement",
settingType: "feature",
@@ -49,7 +49,7 @@ const newSettings: NewSetting[] = [
{
name: "qualityRequest",
value: "0",
active: true,
active: false,
description: "Quality System",
moduleName: "qualityRequest",
settingType: "feature",
@@ -59,7 +59,7 @@ const newSettings: NewSetting[] = [
{
name: "tms",
value: "0",
active: true,
active: false,
description: "Transport system integration",
moduleName: "tms",
settingType: "feature",

View File

@@ -15,6 +15,7 @@ export const allowedOrigins = [
`http://${process.env.PROD_SERVER}:3000`,
`http://${process.env.PROD_SERVER}:3100`, // temp
`http://usmcd1olp082:3000`,
`http://localhost:3600`, // internal docker
];
export const lstCors = () => {
return cors({

View File

@@ -28,7 +28,8 @@ interface Data<T = unknown[]> {
| "delete"
| "post"
| "notification"
| "delete";
| "delete"
| "printing";
level: "info" | "error" | "debug" | "fatal";
message: string;
room?: string;