Printer CRUD OK

This commit is contained in:
Douglas Barone 2023-06-20 09:13:28 -04:00
parent 220fc48b35
commit 31204d4327
7 changed files with 76 additions and 8 deletions

View File

@ -22,6 +22,7 @@ CREATE TABLE "User" (
CREATE TABLE "Printer" (
"id" SERIAL NOT NULL,
"friendlyName" TEXT,
"location" TEXT,
"serialNumber" TEXT,
"hostname" TEXT,
"ip" TEXT NOT NULL,

View File

@ -34,6 +34,7 @@ model Printer {
id Int @id @default(autoincrement())
friendlyName String?
location String?
serialNumber String? @unique
hostname String?

View File

@ -6,31 +6,31 @@ async function main() {
await prisma.printer.createMany({
data: [
{
friendlyName: 'p04',
friendlyName: 'P04',
ip: '10.7.0.134',
model: 'm3655idn',
serialNumber: 'R4P1478461'
},
{
friendlyName: 'p05',
friendlyName: 'P05',
ip: '10.7.0.135',
model: 'm2040dn',
serialNumber: 'VR91483974'
},
{
friendlyName: 'p06',
friendlyName: 'P06',
ip: '10.7.0.136',
model: 'm2040dn',
serialNumber: 'VR91586433'
},
{
friendlyName: 'p07',
friendlyName: 'P07',
ip: '10.7.0.137',
model: 'm2040dn',
serialNumber: 'VR91586432'
},
{
friendlyName: 'p08',
friendlyName: 'P08',
ip: '10.7.0.138',
model: 'p6235cdn',
serialNumber: 'RCG0304510'

View File

@ -0,0 +1,64 @@
import { Request, Response, Router } from 'express'
import { hasRolesMiddleware } from '../middleware/hasRolesMiddleware.js'
import { prisma } from '../prisma.js'
const router = Router()
class PrinterController {
static async index(req: Request, res: Response) {
const printers = await prisma.printer.findMany()
res.json(printers)
}
static async show(req: Request, res: Response) {
const { id } = req.params
// 30 days
const gte = new Date(Date.now() - 1000 * 60 * 60 * 24 * 30)
const printer = await prisma.printer.findUnique({
where: { id: Number(id) },
include: {
PrinterStatus: {
where: {
createdAt: {
gte
}
}
}
}
})
res.json(printer)
}
static async edit(req: Request, res: Response) {
const { id } = req.params
const { friendlyName, ip, location } = req.body
const printer = await prisma.printer.update({
where: { id: Number(id) },
data: { friendlyName, ip, location }
})
res.json(printer)
}
static async delete(req: Request, res: Response) {
const { id } = req.params
await prisma.printer.delete({ where: { id: Number(id) } })
res.json({ message: 'Printer deleted' })
}
}
router.use(hasRolesMiddleware(['ADMIN', 'INSPECTOR']))
router.get('/', PrinterController.index)
router.get('/:id', PrinterController.show)
router.put('/:id', PrinterController.edit)
export default router

0
src/cron.ts Normal file
View File

View File

@ -12,7 +12,7 @@ function getToken(req: Request) {
return token
}
export async function injectUserMiddleware(
export async function populateUserMiddleware(
req: Request,
res: Response,
next: NextFunction

View File

@ -1,19 +1,21 @@
import express, { Request, Response } from 'express'
import bodyParser from 'body-parser'
import { injectUserMiddleware } from './middleware/injectUserMiddleware.js'
import { populateUserMiddleware } from './middleware/populateUserMiddleware.js'
import { authMiddleware } from './middleware/authMiddleware.js'
import LoginRouter from './controllers/LoginController.js'
import PrinterRouter from './controllers/PrinterController.js'
export const app = express()
app.use('/', express.static('public'))
app.use(bodyParser.json())
app.use(injectUserMiddleware)
app.use(populateUserMiddleware)
app.use('/api/login', LoginRouter)
app.use('/api/printer', PrinterRouter)
app.get('/api/me', authMiddleware, async (req: Request, res: Response) =>
res.json(res.locals.user)