clean up database model setting
This commit is contained in:
@@ -37,42 +37,52 @@ var House = DB.sequelize.define(NAME, {
|
||||
},
|
||||
classMethods: {
|
||||
set: ()=>{
|
||||
|
||||
},
|
||||
associate: ()=>{
|
||||
House.hasMany(DB.PowerDatum, {as: 'PowerData'});
|
||||
House.hasMany(DB.User, {as: 'Habitants'});
|
||||
},
|
||||
defineGraphQLType: ()=>{
|
||||
House.graphql_type = new GraphQLObjectType({
|
||||
name: NAME,
|
||||
description: 'A house',
|
||||
fields: () => ({
|
||||
id: globalIdField(NAME),
|
||||
name: {
|
||||
type: new GraphQLNonNull(GraphQLString)
|
||||
},
|
||||
power_data: {
|
||||
type: connectionDefinitions({name: DB.PowerDatum.name, nodeType: DB.PowerDatum.graphql_type}).connectionType,
|
||||
description: "Returns house's power data.",
|
||||
args: connectionArgs,
|
||||
resolve: (house, args) => {
|
||||
return house.getPowerDataByTime(args);
|
||||
fields: () => {
|
||||
var {connectionType: power_data_connection} = connectionDefinitions({name: DB.PowerDatum.name, nodeType: DB.PowerDatum.graphql_type}),
|
||||
{connectionType: habitants_connection} = connectionDefinitions({name: DB.User.name, nodeType: DB.User.graphql_type});
|
||||
|
||||
return {
|
||||
id: globalIdField(NAME),
|
||||
name: {
|
||||
type: new GraphQLNonNull(GraphQLString)
|
||||
},
|
||||
power_data: {
|
||||
type: power_data_connection,
|
||||
description: "Returns house's power data.",
|
||||
args: connectionArgs,
|
||||
resolve: (house, args) => {
|
||||
return house.getPowerDataByTime(args);
|
||||
}
|
||||
},
|
||||
habitants: {
|
||||
type: habitants_connection,
|
||||
description: "Returns list of house's habitants.",
|
||||
args: connectionArgs,
|
||||
resolve: (house, args) => {
|
||||
var params = extend({
|
||||
order: 'name ASC',
|
||||
limit: 50,
|
||||
offset: 0,
|
||||
}, args);
|
||||
delete params.where; // don't allow any additional query params.
|
||||
return house.getHabitants(params);
|
||||
}
|
||||
}
|
||||
},
|
||||
habitants: {
|
||||
type: connectionDefinitions({name: DB.User.name, nodeType: DB.User.graphql_type}).connectionType,
|
||||
description: "Returns list of house's habitants.",
|
||||
args: connectionArgs,
|
||||
resolve: (house, args) => {
|
||||
var params = extend({
|
||||
order: 'name ASC',
|
||||
limit: 50,
|
||||
offset: 0,
|
||||
}, args);
|
||||
delete params.where; // don't allow any additional query params.
|
||||
return house.getHabitants(params);
|
||||
}
|
||||
}
|
||||
}),
|
||||
};
|
||||
},
|
||||
interfaces: [nodeInterface]
|
||||
});
|
||||
},
|
||||
}
|
||||
getPowerDataByTime: (start_date, end_date, page)=>{
|
||||
var params = extend({
|
||||
order: 'time ASC',
|
||||
|
||||
@@ -34,7 +34,13 @@ var PowerDatum = DB.sequelize.define(NAME, {
|
||||
},
|
||||
classMethods: {
|
||||
set: ()=>{
|
||||
PowerDatum.associate();
|
||||
PowerDatum.defineGraphQLType();
|
||||
},
|
||||
associate: ()=>{
|
||||
PowerDatum.belongsTo(DB.House);
|
||||
},
|
||||
defineGraphQLType: ()=>{
|
||||
PowerDatum.graphql_type = new GraphQLObjectType({
|
||||
name: NAME,
|
||||
description: 'A person who uses our app',
|
||||
|
||||
@@ -38,25 +38,32 @@ var User = DB.sequelize.define(NAME, {
|
||||
},
|
||||
classMethods: {
|
||||
set: ()=>{
|
||||
User.associate();
|
||||
User.defineGraqhQLType()
|
||||
},
|
||||
associate: ()=>{
|
||||
User.belongsTo(DB.House);
|
||||
},
|
||||
defineGraqhQLType: ()=>{
|
||||
User.graphql_type = new GraphQLObjectType({
|
||||
name: NAME,
|
||||
description: 'A house',
|
||||
fields: () => ({
|
||||
id: globalIdField(NAME),
|
||||
username: {
|
||||
type: new GraphQLNonNull(GraphQLString)
|
||||
},
|
||||
house: {
|
||||
type: connectionDefinitions({name: DB.House.name, nodeType: DB.House.graphql_type}).connectionType,
|
||||
description: "Returns user's house.",
|
||||
args: connectionArgs,
|
||||
ref: DB.PowerDatum.name,
|
||||
resolve: (user, args) => {
|
||||
return user.getHouse();
|
||||
fields: () => {
|
||||
var {connectionType: house_connection} = connectionDefinitions({name: DB.House.name, nodeType: DB.House.graphql_type});
|
||||
return {
|
||||
id: globalIdField(NAME),
|
||||
username: {
|
||||
type: new GraphQLNonNull(GraphQLString)
|
||||
},
|
||||
house: {
|
||||
type: house_connection,
|
||||
description: "Returns user's house.",
|
||||
resolve: (user, args) => {
|
||||
return user.getHouse();
|
||||
}
|
||||
}
|
||||
}
|
||||
}),
|
||||
};
|
||||
},
|
||||
interfaces: [nodeInterface]
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user