Printer CRUD OK
This commit is contained in:
parent
220fc48b35
commit
31204d4327
|
@ -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,
|
|
@ -34,6 +34,7 @@ model Printer {
|
|||
id Int @id @default(autoincrement())
|
||||
|
||||
friendlyName String?
|
||||
location String?
|
||||
|
||||
serialNumber String? @unique
|
||||
hostname String?
|
||||
|
|
|
@ -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'
|
||||
|
|
64
src/controllers/PrinterController.ts
Normal file
64
src/controllers/PrinterController.ts
Normal 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
0
src/cron.ts
Normal 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
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue
Block a user