feat(rfid): front end view of the readers and there status

This commit is contained in:
2025-07-10 21:29:01 -05:00
parent 6584b37cb0
commit f7b4de8130
15 changed files with 533 additions and 36 deletions

View File

@@ -0,0 +1,21 @@
import { db } from "../../../../database/dbclient.js";
import { rfidReaders } from "../../../../database/schema/rfidReaders.js";
import { returnRes } from "../../../globalUtils/routeDefs/returnRes.js";
import { tryCatch } from "../../../globalUtils/tryCatch.js";
export const getReaders = async () => {
const { data, error } = await tryCatch(db.select().from(rfidReaders));
if (error) {
return returnRes(
false,
"There was an error getting the Readers",
"rfid",
"rfid",
"error",
error
);
}
return returnRes(true, "Current readers", "rfid", "rfid", "info", data);
};

View File

@@ -52,6 +52,7 @@ export const badRead = async (reader: string) => {
lastTrigger: sql`NOW()`,
lastTriggerGood: false,
lastTagScanned: null,
badReads: sql`${rfidReaders.badReads} + 1`,
})
.where(eq(rfidReaders.reader, reader));
createLog(
@@ -85,7 +86,11 @@ export const goodRead = async (reader: string) => {
try {
const goodRead = await db
.update(rfidReaders)
.set({ lastTrigger: sql`NOW()`, lastTriggerGood: true })
.set({
lastTrigger: sql`NOW()`,
lastTriggerGood: true,
goodReads: sql`${rfidReaders.goodReads} + 1`,
})
.where(eq(rfidReaders.reader, reader));
createLog(
"info",

View File

@@ -1,13 +1,21 @@
import {OpenAPIHono} from "@hono/zod-openapi";
import { OpenAPIHono } from "@hono/zod-openapi";
import mgtEvents from "./route/mgtEvents.js";
import tagInfo from "./route/tagInfo.js";
import addReader from "./route/addReader.js";
import updateReader from "./route/updateReader.js";
import manualTrigger from "./route/manualTagRead.js";
import getReaders from "./route/getReaders.js";
const app = new OpenAPIHono();
const routes = [mgtEvents, tagInfo, addReader, updateReader, manualTrigger] as const;
const routes = [
mgtEvents,
tagInfo,
addReader,
updateReader,
manualTrigger,
getReaders,
] as const;
// app.route("/server", modules);
const appRoutes = routes.forEach((route) => {

View File

@@ -0,0 +1,43 @@
import { z, createRoute, OpenAPIHono } from "@hono/zod-openapi";
import { addReader } from "../controller/addReader.js";
import { authMiddleware } from "../../auth/middleware/authMiddleware.js";
import { responses } from "../../../globalUtils/routeDefs/responses.js";
import type { User } from "../../../types/users.js";
import { apiHit } from "../../../globalUtils/apiHits.js";
import { tryCatch } from "../../../globalUtils/tryCatch.js";
import { getReaders } from "../controller/getReaders.js";
const app = new OpenAPIHono();
export const ReaderBody = z.object({
reader: z.string().openapi({ example: "wrapper1" }),
readerIP: z.string().openapi({ example: "192.168.1.52" }),
});
app.openapi(
createRoute({
tags: ["rfid"],
summary: "Get readers",
method: "get",
path: "/getreaders",
responses: responses(),
}),
async (c: any) => {
apiHit(c, { endpoint: "/getreaders" });
const { data, error } = await tryCatch(getReaders());
if (error) {
return c.json({
error,
});
}
return c.json({
data,
});
}
);
export default app;