Files
old-spike/server/models/energy_datum.js

58 lines
1.4 KiB
JavaScript
Raw Normal View History

import DB from "./../config/database";
2016-02-10 16:11:56 -06:00
import extend from 'extend';
import ApiHelper from './../helpers/api_helper';
const NAME = 'EnergyDatum';
/**
* Define your own types here
*/
var EnergyDatum = DB.sequelize.define(NAME, {
id: {
type: DB.Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true // Automatically gets converted to SERIAL for postgres
},
2016-02-10 18:57:15 -06:00
day: {
type: DB.Sequelize.DATEONLY,
},
production: DB.Sequelize.FLOAT,
consumption: DB.Sequelize.FLOAT
}, {
paranoid: true,
underscored: true,
tableName: "energy_data",
instanceMethods: {
2016-02-10 18:57:15 -06:00
exposeToApi: function(){
2016-02-10 16:11:56 -06:00
var energy_datum = this,
2016-02-10 18:57:15 -06:00
values = energy_datum.dataValues;
2016-02-10 16:11:56 -06:00
values.energy_datum = energy_datum.day.getTime() / 1000;
return values;
}
},
classMethods: {
set: ()=>{
EnergyDatum.associate();
},
associate: ()=>{
EnergyDatum.belongsTo(DB.House);
2016-02-10 16:11:56 -06:00
},
exposeForHouseAtDates: (house_id, dates)=>{
var params = {house_id: house_id};
extend(params, ApiHelper.datesParamToSequelize(dates, 'day'));
return EnergyDatum.findAll({
where: params,
attributes: ['id', 'production', 'consumption', 'day']
}).then((energy_data)=>{
return energy_data.map((energy_datum)=>{
return energy_datum.exposeToApi();
});
});
}
}
});
2016-02-09 11:16:49 -06:00
EnergyDatum.NAME = NAME;
module.exports = EnergyDatum;