From da4cd16adeba4a44d1fb1fc758037ded1f5da41d Mon Sep 17 00:00:00 2001 From: Sergey Yarkov Date: Wed, 8 Nov 2023 16:26:04 +0300 Subject: [PATCH] refactor --- controllers/modbus.controller.js | 36 +++++++++++++++-- data.db | Bin 20480 -> 20480 bytes errors/index.js | 14 +++++++ middlewares/error-handler.middleware.js | 2 +- public/css/dist.css | 17 ++++---- public/index.html | 25 ++++++++---- public/js/app.js | 50 +++++++++++++++++++----- routes/api/modbus.router.js | 5 +++ validators/display-value.schema.js | 2 - 9 files changed, 118 insertions(+), 33 deletions(-) create mode 100644 errors/index.js diff --git a/controllers/modbus.controller.js b/controllers/modbus.controller.js index 2596b94..712741b 100644 --- a/controllers/modbus.controller.js +++ b/controllers/modbus.controller.js @@ -1,6 +1,7 @@ import db from "#root/config/database.config.js"; import modbusClient from "#root/config/modbus-client.config.js"; import * as utils from '#root/utils/index.js' +import { RowNotFoundError } from '#root/errors/index.js' import { appService, modbusService } from "#root/services/index.js"; export const modbusController = { @@ -136,7 +137,7 @@ export const modbusController = { async removeDevice(req, res, next) { try { const device = await db.get(`SELECT id FROM "modbus_slaves" WHERE id = ?`, [req.body.id]); - if (!device) return res.status(404).json({ message: "Device not found." }); + if (!device) throw new RowNotFoundError(); await db.run(`DELETE FROM "modbus_slaves" WHERE id = ?`, [req.body.id]); return res.status(200).json({ message: "Device removed." }); } catch (error) { @@ -158,7 +159,12 @@ export const modbusController = { VALUES (?, ?, ?, ?, ?) `, [name, slave_id, reg_addr, reg_format, reg_type] ); - return res.status(200).json({ message: 'Created.' }); + const createdDisplayValue = await db.get(`SELECT * FROM "display_values" WHERE id = last_insert_rowid()`); + + return res.status(200).json({ + message: 'Created.', + data: createdDisplayValue, + }); } catch (error) { next(error); } @@ -179,6 +185,30 @@ export const modbusController = { } }, + /** + * Update display value + * @param {import('express').Request} req + * @param {import('express').Response} res + * @param {import('express').NextFunction} next + */ + async updateDisplayValue(req, res, next) { + try { + const { id, name, slave_id, reg_addr, reg_type, reg_format } = req.body; + const row = await db.get(`SELECT id from "display_values" WHERE id = ?`, [id]); + if (!row) throw new RowNotFoundError(); + await db.run(`UPDATE "display_values" SET + name = ?, + slave_id = ?, + reg_addr = ?, + reg_type = ?, + reg_format = ? + WHERE id = ?`, [name, slave_id, reg_addr, reg_type, reg_format, id]); + return res.status(200).json({ message: 'Updated.' }); + } catch (error) { + next(error); + } + }, + /** * Creates event stream aboud modbus connection status * @param {import('express').Request} req @@ -209,7 +239,7 @@ export const modbusController = { if (!slave_id) return res.status(400).json({ error: { message: "'slave_id' parameter is required." } }); const device = await db.get(`SELECT * FROM "modbus_slaves" WHERE id = ?`, [slave_id]); - if (!device) return res.status(404).json({ error: { message: "Device not found." } }); + if (!device) throw new RowNotFoundError(); utils.setSSEHeaders(res); diff --git a/data.db b/data.db index 3986657d1942e94f93e4832462c2eea26d5e0b7e..c0f7498781fd668a576e19a9f6386cff74904a7c 100644 GIT binary patch delta 360 zcmZozz}T>Wae_4CzKJrYN&ap8i}@$;*YIcX-R3vq z7v=lTcZ{!vZv$T*-^|U13NC#0K;>c#;*1=EqKU=Di770eK~DbuK0=Kg>uG2v z1yrdD5(_OzNi0cCQOHwF%uR(#%J8r=sDrEwE=epYEmm;!aSZY`Vx7#VFU!a}Sw~;V znib*>1|Se(;0Kvg4Am&nh3pAGBCABOwIaR?J;_MIrJcv;^ delta 249 zcmZozz}T>Wae_2s>_i!7#@LMs3+0s=7#Mi?zBBN@<-g5;l7AcjV*UyIHT)U;q5MYt zqI}=^F7sX9ENHNa&q9TtkwZ{4pT#pM)YH%ms7+Xqkx@{zG?PWpBgiel*hq$lok1NW z6kL*6Qd+Fw=;IjVYvePTPhXbNXR?mIlC_VEr<1?Gk02*I16XfxfDb>!I3W&p24Rq1 z=P)B5sCh!{a4|!l&7Jxk0<2f~fe`2%d;ZCx{!N
-
+
Devices: @@ -290,7 +290,12 @@

- - +