api route wip

This commit is contained in:
newtbot
2023-12-30 01:02:09 +08:00
parent 3913d0d2f7
commit 73b43adb3a
12 changed files with 239 additions and 42 deletions

View File

@ -0,0 +1,39 @@
const { sequelize } = require("../../Database/mySql.js");
const { IoTModel } = require("../../Database/model/IoTModel.js");
async function getallData() {
try {
sequelize.sync();
const allData = await IoTModel.findAll({
attributes: ['id', 'psiData', 'humidityData', 'o3Data', 'no2Data', 'so2Data', 'coData', 'temperatureData', 'windspeedData', 'currentTime', 'regionData' , 'createdAt' , 'updatedAt'],
});
return allData;
}
catch(error) {
console.error(error);
return null;
}
}
async function getLatestData() {
try {
sequelize.sync();
const latestData = await IoTModel.findAll({
limit: 1,
order: [['createdAt', 'DESC']]
});
return latestData;
}
catch (error) {
console.error(error);
return null;
}
}
module.exports = { getallData , getLatestData };

View File

@ -1,10 +1,11 @@
const { sequelize } = require("../../Database/mySql.js");
const { IoTModel } = require("../../Database/model/IoTModel.js");
const { IoTModel } = require("../../Database/model/IoTModel.js");
const { api_log_Model } = require("../../Database/model/apiLog.js");
async function insertData(data) {
console.log(data);
function insertData(data) {
try {
const latestData = await IoTModel.create({
//const latestData = await IoTModel.create({
IoTModel.create({
psiData: data.psi,
humidityData: data.humidity,
o3Data: data.o3,
@ -22,7 +23,27 @@ async function insertData(data) {
}
}
module.exports = { insertData };
function insertLogData(log){
try{
api_log_Model.create({
ip: log.ip,
time: log.time,
method: log.method,
host: log.host,
statusCode: log.statusCode,
Responsesize: log.Responsesize,
referrer: log.referrer,
userAgent: log.userAgent,
});
}
catch
(error){
console.error(error);
}
}
module.exports = { insertData , insertLogData };

View File

@ -38,7 +38,7 @@ client.on('connect', () => {
client.on('end', () => {
console.log('Disconnected from MQTT broker');
client.reconnect = true;
}
}
);

View File

@ -1,19 +1,26 @@
const { connect } = require("../routes/test");
const { insertLogData } = require("../functions/Database.js");
const APIlogger = (req, res, next) => {
/*
console.log("API request received");
console.log(req.ip);
console.log(req.path);
console.log(req.method);
console.log(res.statusCode);
console.log(req.headers['user-agent']);
console.log(req.secure);
console.log(req.protocol);
console.log(req.get('host'));
console.log(new Date());
*/
const log = {
ip: req.ip,
time: new Date().toUTCString(),
method: req.method,
//https://stackoverflow.com/questions/10183291/how-to-get-the-full-url-in-express
host: `${req.protocol}://${req.get("host")}${req.originalUrl}`,
statusCode: res.statusCode,
Responsesize: res.get('Content-Length') ? res.get('Content-Length') : 0,
referrer: res.get('content-type') ? res.get('content-type') : "none",
userAgent: req.headers["user-agent"],
};
//upload to db logic here for api logs
insertLogData(log);
next();
};
module.exports = { APIlogger };
/*
method: req.method,
statusCode: res.statusCode,
protocol: req.protocol,
@ -22,14 +29,4 @@ const APIlogger = (req, res, next) => {
ip: req.ip,
userAgent: req.headers["user-agent"],
host: `${req.protocol}://${req.get("host")}${req.originalUrl}`,
};
console.log(log);
//upload to db logic here for api logs
next();
};
module.exports = { APIlogger };
*/

View File

@ -21,15 +21,6 @@ app.use('/api/', APIlogger );
//route logic
app.use('/api/', require('../routes/api_route.js'));
/*
const testRoute = require("../routes/test.js")
const latestDataroute = require("../routes/latest-Data.js")
app.use('/test', testRoute);
app.use('/api/latest-data', latestDataroute);
*/
app.listen(port, () => {
console.log(`app listening on port ${port}`);
});

View File

@ -19,5 +19,6 @@ const router = require('express').Router();
router.use('/test' , require('./test'));
router.use('/latest-data', require('./latest-data'));
router.use('/:month', require('./monthlyData'));
module.exports = router;

View File

@ -1,9 +1,11 @@
const { sequelize } = require("../../Database/mySql.js");
const { IoTModel } = require("../../Database/model/IoTModel.js");
const { getLatestData } = require("../functions/APIDatabase.js");
const express = require('express');
const router = express.Router();
// Logic for model and API by 1
/*
async function getLatestData() {
try {
sequelize.sync();
@ -18,6 +20,7 @@ async function getLatestData() {
return null;
}
}
*/
router.get('/', async (req, res) => {

View File

@ -0,0 +1,21 @@
const { sequelize } = require("../../Database/mySql.js");
const { IoTModel } = require("../../Database/model/IoTModel.js");
const { getallData } = require("../functions/APIDatabase.js");
const express = require('express');
const router = express.Router();
router.get('/', async (req, res) => {
try {
//get month from url
console.log(req.params.month);
} catch (error) {
console.error(error);
}
});
// Export the router
module.exports = router;

View File

@ -1,8 +1,11 @@
const { sequelize } = require("../../Database/mySql.js");
const { IoTModel } = require("../../Database/model/IoTModel.js");
const { getallData } = require("../functions/APIDatabase.js");
const express = require('express');
const router = express.Router();
/*
async function getallData() {
try {
sequelize.sync();
@ -17,6 +20,7 @@ async function getallData() {
}
}
*/
router.get('/', async (req, res) => {
try {