const env = process.env.NODE_ENV || 'development'; console.log("ENV: %s", env); const config = require(__dirname + '/../../config/config.json')[env]; config.host = process.env.DATABASE_HOST || config.host || '127.0.0.1'; config.database = process.env.DATABASE_NAME || config.database || 'iot'; config.username = process.env.DATABASE_USER || config.username; config.password = process.env.DATABASE_PASS || config.password; 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} }); console.log('sqlz: Checking config sources: config.host : %s', config.host ); console.log('sqlz: Checking config sources: config.database : %s', config.database ); var sqlz = new Sequelize(config.database, config.username, config.password, { dialect: config.dialect, host: config.host, 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}, // createdAt: { // type: Sequelize.DATE, // allowNull: false, // defaultValue: Sequelize.literal('CURRENT_TIMESTAMP'), // }, } ,{ timestamps: false, // Disable automatic timestamp management } ); 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 }