Files
iot/src/db/database.js
Dobromir Popov 1d31789be0 misc old changes
2021-04-30 18:28:22 +03:00

95 lines
2.4 KiB
JavaScript

const Sequelize = require("sequelize");
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
let DeviceMessageSchema = new Schema({
_id: {type: Number, required: true},
device_id: {type: String, required: true, max: 100}
});
let DevicesSchema = new Schema({
id: {type: Number, required: true},
url: {type: String, required: true, max: 100}
});
var sqlz = new Sequelize('iot', 'iot', '!iot_popovi',{dialect: 'mysql', logging: false});
var Device = sqlz.define('device', {
id: { type: Sequelize.INTEGER, autoIncrement: true, primaryKey: true },
name: Sequelize.STRING,
baseurl: Sequelize.TEXT,
apikey: Sequelize.TEXT,
//config: Sequelize.JSON,
lastseen: Sequelize.DATE
});
var DeviceMessage = sqlz.define('devicemessage', {
id: { type: Sequelize.INTEGER, autoIncrement: true, primaryKey: true },
device_id: { type: Sequelize.INTEGER, allowNull: false},
//id,"device_id","field_name","field_value","timestamp"
field_name: { type: Sequelize.STRING(120), allowNull: false},
field_value: { type: Sequelize.TEXT, allowNull: false},
timestamp: { type: Sequelize.DATE, allowNull: false},
});
DeviceMessage.GetByName = function (name, days)
{
var User = sqlz.User;
User.find({
where: {
field_name: name,
timestamp: {$gte: new Date()}
}
}).then(function(user)
{
if(!user)
{
error.status = 500; error.message = "ERROR_INVALID_USER"; error.code = 301;
return next(error);
}
// Build the profile from the user object
profile = {
"firstName": user.firstName,
"lastName": user.lastName,
"emailAddress": user.emailAddress
}
response.status(200).send(profile);
});
}
var DeviceCommand = sqlz.define("command", {
device: { type: Sequelize.STRING},
command: {type: Sequelize.TEXT},
info: {type: Sequelize.STRING},
ac_power: Sequelize.BOOLEAN,
ac_mode: Sequelize.ENUM('Auto', 'Heat', 'Cool', "Fan"),
ac_fan: Sequelize.ENUM('Auto', 'Low', 'Med', "Hi"),
ac_temp: Sequelize.FLOAT,
ac_turbo: Sequelize.BOOLEAN,
ac_swing: Sequelize.BOOLEAN,
ac_display: Sequelize.BOOLEAN,
ac_econo: Sequelize.BOOLEAN,
ac_health: Sequelize.BOOLEAN,
});
sqlz.sync(
//{ force: true }
)
.then(() => {
console.log(`Database & tables created!`)
})
module.exports = {
init: function() {
//console.log(DeviceCommand.rawAttributes.states.values);
sqlz.sync();
},
sqlz,
Device,
DeviceCommand,
DeviceMessage
//etc
}