Files
old-spike/models/datum.js
2016-01-26 19:42:30 -06:00

79 lines
1.7 KiB
JavaScript

"use strict";
var Database = require("./../config/database");
class Datum {
static associate(){
var Country = require("./country");
this.sql.belongsTo(Country.sql, {foreignKey: "country_id", targetKey: "id", constraints: false});
}
}
Datum.sql = Database.sequelize.define('Datum', {
id: {
type: Database.Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true // Automatically gets converted to SERIAL for postgres
},
country_id: {
type: Database.Sequelize.INTEGER,
unique: "country_year",
references: {
model: "countries",
key: "id",
allowNull: false
}
},
year: {
type: Database.Sequelize.INTEGER,
unique: "country_year",
allowNull: false
},
population: Database.Sequelize.BIGINT,
gdp: Database.Sequelize.FLOAT,
total_emissions: Database.Sequelize.FLOAT,
energy_emissions: Database.Sequelize.FLOAT,
industrial_emissions: Database.Sequelize.FLOAT,
agriculture_emissions: Database.Sequelize.FLOAT,
waste_emissions: Database.Sequelize.FLOAT,
lucf_emissions: Database.Sequelize.FLOAT,
energy: Database.Sequelize.FLOAT
}, {tableName: "data"});
Datum.graphql = new GraphQLObjectType({
name: "Datum",
description: "A world country",
fields: ()=>{
year: {
type: new GraphQLNonNull(GraphQLString)
},
population: {
type: GraphQLInteger
},
gdp: {
type: GraphQLFloat
},
total_emissions: {
type: GraphQLFloat
},
energy_emissions: {
type: GraphQLFloat
},
industrial_emissions: {
type: GraphQLFloat
},
agriculture_emissions: {
type: GraphQLFloat
},
waste_emissions: {
type: GraphQLFloat
},
lucf_emissions: {
type: GraphQLFloat
}
}
});
module.exports = Datum;