From c55b16d259f38477f9b9a66d46da844d5f3d93e3 Mon Sep 17 00:00:00 2001 From: szbk Date: Tue, 5 Mar 2024 00:26:10 +0300 Subject: [PATCH] Create Log Save System --- app.js | 4 +-- controller/device.log.controller.js | 47 +++++++++++++++++++++++++++++ controller/save.controller.js | 6 ++-- models/device.model.js | 21 ++++++++++++- route/device.info.route.js | 13 -------- route/device.log.route.js | 32 ++++++++++++++++++++ 6 files changed, 105 insertions(+), 18 deletions(-) create mode 100644 controller/device.log.controller.js delete mode 100644 route/device.info.route.js create mode 100644 route/device.log.route.js diff --git a/app.js b/app.js index 8890ec6..afd70f3 100644 --- a/app.js +++ b/app.js @@ -27,8 +27,8 @@ mongoose.connect(configs.mongodburl, { // Save Route app.use("/api/save", require("./route/save.route")); -// Update Route -app.use("/api/update", require("./route/update.route")); +// Device Log Route +app.use("/api/device-log", require("./route/device.log.route")); // Wrong Endpoint app.use("/api/*", (req, res) => { res.status(400).json({error: true, message: "Invalid api end point!"}); diff --git a/controller/device.log.controller.js b/controller/device.log.controller.js new file mode 100644 index 0000000..2fff18d --- /dev/null +++ b/controller/device.log.controller.js @@ -0,0 +1,47 @@ +const configs = require("../configs"); +const DeviceModel = require("../models/device.model"); + +const set = async ( + token, + device_id, + remote_name, + remote_type, + operating_type +) => { + if (token === configs.verifyToken) { + try { + // Önce kaydı bulalım + const filter = { + _id: device_id + }; + + const update = { + $push: { + device_log: { + remote_name, + remote_type, + operating_type, + log_time: Date.now() + } + } + }; + + const result = await DeviceModel.updateOne(filter, update); + + if (result.nModified === 0) { + throw new Error("Güncellenmek istenen kayıt bulunamadı"); + } + + return "Log Kaydedildi!"; + } catch (error) { + // if (error.code === 11000) { + // throw new Error("Zaten kaydedilmiş"); + // } + throw new Error("Mongodb'ye kaydedilirken hata oluştu"); + } + } else { + throw new Error("Hatalı token"); + } +}; + +module.exports = { set }; diff --git a/controller/save.controller.js b/controller/save.controller.js index ca931e6..9f75dec 100644 --- a/controller/save.controller.js +++ b/controller/save.controller.js @@ -31,7 +31,8 @@ const save = async ( serial_number, model, firmware_version, - device_ip_address + device_ip_address, + update_time: Date.now() }); const result = await newDevice.save(); return "Cihaz kaydedildi."; @@ -48,7 +49,8 @@ const save = async ( const update = { $set: { - device_ip_address + device_ip_address, + update_time: Date.now() } }; diff --git a/models/device.model.js b/models/device.model.js index a034259..e69764c 100644 --- a/models/device.model.js +++ b/models/device.model.js @@ -2,6 +2,21 @@ const mongoose = require("mongoose"); const Schema = mongoose.Schema; +const deviceLogSchema = new Schema({ + remote_name: { + type: String + }, + remote_type: { + type: String + }, + operating_type:{ + type: String // On/Off - Homekit Reset - Reset + }, + log_time: { + type: Date + } +}); + const deviceSchema = new Schema({ device_name: { type: String, @@ -26,7 +41,11 @@ const deviceSchema = new Schema({ device_ip_address: { type: String, unique: true - } + }, + update_time: { + type: Date + }, + device_log: [deviceLogSchema] }); const Device = mongoose.model("Device", deviceSchema); diff --git a/route/device.info.route.js b/route/device.info.route.js deleted file mode 100644 index 6d408b4..0000000 --- a/route/device.info.route.js +++ /dev/null @@ -1,13 +0,0 @@ -const express = require("express"); -const router = express.Router(); -// const MainController = require("../controller/main.controller"); - -router.use(express.urlencoded({extended: false})); -router.use(express.json()); - -// Save route -router.get("/", (req, res) => { - res.status(400).json({error: true, message: "Invalid api end point!"}); -}); - -module.exports = router; \ No newline at end of file diff --git a/route/device.log.route.js b/route/device.log.route.js new file mode 100644 index 0000000..f947b2a --- /dev/null +++ b/route/device.log.route.js @@ -0,0 +1,32 @@ +const express = require("express"); +const router = express.Router(); +const DeviceLogController = require("../controller/device.log.controller"); + +router.use(express.urlencoded({ extended: false })); +router.use(express.json()); + +// Device Log Save route +router.post("/", async (req, res) => { + try { + // Token Control Middleware + const result = await DeviceLogController.set( + req.body.token, + req.body.device_id, + req.body.remote_name, + req.body.remote_type, + req.body.operating_type, + ); + + return res.status(200).json({ + error: false, + result + }); + } catch (error) { + res.status(400).json({ + error: true, + result: error.message + }); + } +}); + +module.exports = router;