Initial commit
This commit is contained in:
173
db/dbcontroller.js
Normal file
173
db/dbcontroller.js
Normal file
@@ -0,0 +1,173 @@
|
||||
const MongoClient = require('mongodb').MongoClient;
|
||||
const models = require('../models')
|
||||
|
||||
const mongodb_hostname = process.env.MONGODB_HOST || 'localhost';
|
||||
const mongodb_port = process.env.MONGODB_PORT || 27017;
|
||||
const mongodb_database = process.env.MONGODB_DATABASE || 'lsp';
|
||||
const mongodb_url = 'mongodb://' + mongodb_hostname + ':' + mongodb_port;
|
||||
|
||||
const client = new MongoClient(mongodb_url, { useNewUrlParser: true, useUnifiedTopology: true });
|
||||
|
||||
const bucketMaxSize = 4096;
|
||||
|
||||
var _db;
|
||||
var _devices = MongoClient();
|
||||
var _data;
|
||||
var _ipx_data;
|
||||
var _events;
|
||||
var _alerts;
|
||||
|
||||
var days = function(date) {
|
||||
return new Date((date - date%86400) * 1000);
|
||||
}
|
||||
|
||||
var init = async function () {
|
||||
client.connect(function (err) {
|
||||
if (err) {
|
||||
return { error: "Error connecting to DB: " + err }
|
||||
|
||||
} else {
|
||||
_db = client.db(mongodb_database);
|
||||
_devices = _db.collection('devices');
|
||||
_data = _db.collection('data');
|
||||
_ipx_data = _db.collection('ipx-data');
|
||||
_events = _db.collection('events');
|
||||
_alerts = _db.collection('alerts');
|
||||
|
||||
////////////////////////////
|
||||
// FLUSH DB BY UNCOMMENTING
|
||||
// _devices.remove(function(err, objects){});
|
||||
// _data.remove(function(err, objects){});
|
||||
// _ipx_data.remove(function(err, objects){});
|
||||
// _events.remove(function(err, objects){});
|
||||
// _alerts.remove(function(err, objects){});
|
||||
|
||||
return null;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
var addData = async function (relay, device, element) {
|
||||
try {
|
||||
const model = await models.data.validateAsync(element);
|
||||
|
||||
await _data.updateOne(
|
||||
{
|
||||
device: device,
|
||||
date: days(element.date),
|
||||
bucketSize: { $lt: bucketMaxSize },
|
||||
},
|
||||
{
|
||||
$addToSet: {
|
||||
data: model
|
||||
},
|
||||
$min: { min: model.value },
|
||||
$max: { max: model.value },
|
||||
$inc: { bucketSize: 1 },
|
||||
},
|
||||
{
|
||||
upsert: true
|
||||
})
|
||||
.then(err => {
|
||||
return err;
|
||||
})
|
||||
} catch (err) {
|
||||
return err;
|
||||
}
|
||||
}
|
||||
|
||||
var addEvent = async function (relay, device, element) {
|
||||
try {
|
||||
const model = await models.event.validateAsync(element);
|
||||
|
||||
await _events.updateOne(
|
||||
{
|
||||
device: device,
|
||||
date: days(element.date),
|
||||
bucketSize: { $lt: bucketMaxSize },
|
||||
},
|
||||
{
|
||||
$addToSet: {
|
||||
events: model
|
||||
},
|
||||
$min: { first: model.date },
|
||||
$max: { last: model.date },
|
||||
$inc: { bucketSize: 1 },
|
||||
},
|
||||
{
|
||||
upsert: true
|
||||
})
|
||||
.then(err => {
|
||||
return err;
|
||||
})
|
||||
} catch (err) {
|
||||
return err;
|
||||
}
|
||||
}
|
||||
|
||||
var addAlert = async function (relay, device, element) {
|
||||
try {
|
||||
const model = await models.alert.validateAsync(element);
|
||||
|
||||
await _alerts.updateOne(
|
||||
{
|
||||
device: device,
|
||||
relay: relay,
|
||||
bucketSize: { $lt: bucketMaxSize },
|
||||
},
|
||||
{
|
||||
$addToSet: {
|
||||
alerts: model
|
||||
},
|
||||
$min: { first: model.date },
|
||||
$max: { last: model.date },
|
||||
$inc: { bucketSize: 1 },
|
||||
},
|
||||
{
|
||||
upsert: true
|
||||
})
|
||||
.then(err => {
|
||||
return err;
|
||||
})
|
||||
} catch (err) {
|
||||
console.log(err)
|
||||
return err;
|
||||
}
|
||||
}
|
||||
|
||||
var addIPXData = async function (relay, device, child, element) {
|
||||
try {
|
||||
const model = await models.ipxdata.validateAsync(element);
|
||||
|
||||
await _ipx_data.updateOne(
|
||||
{
|
||||
device: device,
|
||||
child: child,
|
||||
date: days(element.date),
|
||||
bucketSize: { $lt: bucketMaxSize },
|
||||
},
|
||||
{
|
||||
$addToSet: {
|
||||
data: model
|
||||
},
|
||||
$min: { first: model.date },
|
||||
$max: { last: model.date },
|
||||
$inc: { bucketSize: 1 },
|
||||
},
|
||||
{
|
||||
upsert: true
|
||||
})
|
||||
.then(err => {
|
||||
return err;
|
||||
})
|
||||
} catch (err) {
|
||||
return err;
|
||||
}
|
||||
}
|
||||
|
||||
exports.init = init
|
||||
|
||||
exports.addData = addData
|
||||
exports.addEvent = addEvent
|
||||
exports.addAlert = addAlert
|
||||
exports.addIPXData = addIPXData
|
||||
3
db/index.js
Normal file
3
db/index.js
Normal file
@@ -0,0 +1,3 @@
|
||||
const db = require('./dbcontroller.js');
|
||||
|
||||
module.exports = db;
|
||||
167
db/mongoose_dbcontroller.js
Normal file
167
db/mongoose_dbcontroller.js
Normal file
@@ -0,0 +1,167 @@
|
||||
const Collection = require('mongodb').MongoClient;
|
||||
const mongoose = require('mongoose');
|
||||
|
||||
const mongodb_hostname = process.env.MONGODB_HOST || 'localhost';
|
||||
const mongodb_port = process.env.MONGODB_PORT || 27017;
|
||||
const mongodb_database = process.env.MONGODB_DATABASE || 'lsp';
|
||||
const mongodb_url = 'mongodb://' + mongodb_hostname + ':' + mongodb_port;
|
||||
|
||||
const db = mongoose.connection;
|
||||
|
||||
|
||||
const bucketMaxSize = 1000;
|
||||
|
||||
var _db;
|
||||
var _data = Collection();
|
||||
var _ipx_data;
|
||||
var _events;
|
||||
var _alerts;
|
||||
|
||||
var days = function(date) {
|
||||
const complete = new Date(1000 * date);
|
||||
const days = new Date(complete.toDateString())
|
||||
return days;
|
||||
}
|
||||
|
||||
var init = function (callback) {
|
||||
mongoose.connect(mongodb_url, { useNewUrlParser: true, useUnifiedTopology: true });
|
||||
db.on('error', console.error.bind(console, 'connection error:'));
|
||||
db.once('open', function () {
|
||||
// we're connected!
|
||||
if (callback) callback(null);
|
||||
});
|
||||
// client.connect(function (err) {
|
||||
// if (err) {
|
||||
// if (callback) callback({ error: "Error connecting to DB: " + err })
|
||||
// }
|
||||
// else {
|
||||
// _db = client.db(mongodb_database);
|
||||
// _data = _db.collection('data');
|
||||
// _ipx_data = _db.collection('ipx-data');
|
||||
// _events = _db.collection('events');
|
||||
// _alerts = _db.collection('alerts');
|
||||
|
||||
// ////////////////////////////
|
||||
// // FLUSH DB BY UNCOMMENTING
|
||||
// // _data.remove(function(err, objects){});
|
||||
// // _ipx_data.remove(function(err, objects){});
|
||||
// // _events.remove(function(err, objects){});
|
||||
// // _alerts.remove(function(err, objects){});
|
||||
|
||||
// if (callback) callback(null);
|
||||
// }
|
||||
// });
|
||||
}
|
||||
|
||||
var addData = function (relay, device, element, callback) {
|
||||
// const query = {
|
||||
// device: device,
|
||||
// date: days(element.date),
|
||||
// bucketSize: { $lt: bucketMaxSize },
|
||||
// };
|
||||
|
||||
// const data = {
|
||||
// index: element.index,
|
||||
// value: element.value,
|
||||
// date: new Date(1000 * element.date)
|
||||
// };
|
||||
|
||||
// const update = {
|
||||
// $push: {
|
||||
// data: data
|
||||
// },
|
||||
// $min: { min: data.value },
|
||||
// $max: { max: data.value },
|
||||
// $inc: { bucketSize: 1 },
|
||||
// };
|
||||
|
||||
// const options = {
|
||||
// upsert: true
|
||||
// };
|
||||
|
||||
// _data.updateOne(query, update, options, function (err, result) {
|
||||
// if (callback) { callback(err, result); }
|
||||
// });
|
||||
}
|
||||
|
||||
var addEvent = function (relay, device, element, callback) {
|
||||
// const query = {
|
||||
// device: device,
|
||||
// day: days(element.date),
|
||||
// bucketSize: { $lt: bucketMaxSize },
|
||||
// };
|
||||
|
||||
// const event = {
|
||||
// index: element.index,
|
||||
// value: element.value,
|
||||
// type: element.type,
|
||||
// date: new Date(1000 * element.date)
|
||||
// };
|
||||
|
||||
// const update = {
|
||||
// $push: {
|
||||
// events: event
|
||||
// },
|
||||
// $min: { first: event.date },
|
||||
// $max: { last: event.date },
|
||||
// $inc: { bucketSize: 1 },
|
||||
// };
|
||||
|
||||
// const options = {
|
||||
// upsert: true
|
||||
// };
|
||||
|
||||
// _events.updateOne(query, update, options, function (err, result) {
|
||||
// if (callback) { callback(err, result); }
|
||||
// });
|
||||
}
|
||||
|
||||
var addAlert = function (relay, device, element, callback) {
|
||||
// const object = {
|
||||
// relay: relay,
|
||||
// device: device,
|
||||
// date: new Date(1000 * element.date),
|
||||
// alert: element.alerts
|
||||
// };
|
||||
|
||||
// _alerts.insertOne(object, function (err, result) {
|
||||
// if (callback) { callback(err, result); }
|
||||
// });
|
||||
}
|
||||
|
||||
var addIPXData = function (relay, device, child, element, callback) {
|
||||
// const query = {
|
||||
// child: child,
|
||||
// date: days(element.timestamp),
|
||||
// bucketSize: { $lt: bucketMaxSize },
|
||||
// };
|
||||
|
||||
// const data = {
|
||||
// date: new Date(1000 * element.timestamp),
|
||||
// tags: element.tags
|
||||
// };
|
||||
|
||||
// const update = {
|
||||
// $push: {
|
||||
// data: data
|
||||
// },
|
||||
// $min: { first: data.date },
|
||||
// $max: { last: data.date },
|
||||
// $inc: { bucketSize: 1 },
|
||||
// };
|
||||
|
||||
// const options = {
|
||||
// upsert: true
|
||||
// };
|
||||
|
||||
// _ipx_data.updateOne(query, update, options, function (err, result) {
|
||||
// if (callback) { callback(err, result); }
|
||||
// });
|
||||
}
|
||||
|
||||
exports.init = init
|
||||
|
||||
exports.addData = addData
|
||||
exports.addEvent = addEvent
|
||||
exports.addAlert = addAlert
|
||||
exports.addIPXData = addIPXData
|
||||
Reference in New Issue
Block a user