clean up database model setting
This commit is contained in:
15
lib/relay/app.relay.js
Normal file
15
lib/relay/app.relay.js
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
import 'babel-polyfill';
|
||||||
|
|
||||||
|
import App from './components/App';
|
||||||
|
import AppHomeRoute from './routes/AppHomeRoute';
|
||||||
|
import React from 'react';
|
||||||
|
import ReactDOM from 'react-dom';
|
||||||
|
import Relay from 'react-relay';
|
||||||
|
|
||||||
|
ReactDOM.render(
|
||||||
|
<Relay.RootContainer
|
||||||
|
Component={App}
|
||||||
|
route={new AppHomeRoute()}
|
||||||
|
/>,
|
||||||
|
document.getElementById('root')
|
||||||
|
);
|
||||||
34
lib/relay/components/App.js
Normal file
34
lib/relay/components/App.js
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
import React from 'react';
|
||||||
|
import Relay from 'react-relay';
|
||||||
|
|
||||||
|
import DB from './../../config/database'
|
||||||
|
|
||||||
|
class App extends React.Component {
|
||||||
|
render() {
|
||||||
|
var viewer = this.props.viewer,
|
||||||
|
house = viewer.house.edge.node;
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<h1>Hi, {viewer.username}</h1>
|
||||||
|
<p>You are living in the {house.name} house!!!!</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Relay.createContainer(App, {
|
||||||
|
fragments: {
|
||||||
|
viewer: () => Relay.QL`
|
||||||
|
fragment on ${DB.User.name} {
|
||||||
|
username
|
||||||
|
house {
|
||||||
|
edge {
|
||||||
|
node {
|
||||||
|
name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
},
|
||||||
|
});
|
||||||
@@ -37,18 +37,27 @@ var House = DB.sequelize.define(NAME, {
|
|||||||
},
|
},
|
||||||
classMethods: {
|
classMethods: {
|
||||||
set: ()=>{
|
set: ()=>{
|
||||||
|
|
||||||
|
},
|
||||||
|
associate: ()=>{
|
||||||
House.hasMany(DB.PowerDatum, {as: 'PowerData'});
|
House.hasMany(DB.PowerDatum, {as: 'PowerData'});
|
||||||
House.hasMany(DB.User, {as: 'Habitants'});
|
House.hasMany(DB.User, {as: 'Habitants'});
|
||||||
|
},
|
||||||
|
defineGraphQLType: ()=>{
|
||||||
House.graphql_type = new GraphQLObjectType({
|
House.graphql_type = new GraphQLObjectType({
|
||||||
name: NAME,
|
name: NAME,
|
||||||
description: 'A house',
|
description: 'A house',
|
||||||
fields: () => ({
|
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),
|
id: globalIdField(NAME),
|
||||||
name: {
|
name: {
|
||||||
type: new GraphQLNonNull(GraphQLString)
|
type: new GraphQLNonNull(GraphQLString)
|
||||||
},
|
},
|
||||||
power_data: {
|
power_data: {
|
||||||
type: connectionDefinitions({name: DB.PowerDatum.name, nodeType: DB.PowerDatum.graphql_type}).connectionType,
|
type: power_data_connection,
|
||||||
description: "Returns house's power data.",
|
description: "Returns house's power data.",
|
||||||
args: connectionArgs,
|
args: connectionArgs,
|
||||||
resolve: (house, args) => {
|
resolve: (house, args) => {
|
||||||
@@ -56,7 +65,7 @@ var House = DB.sequelize.define(NAME, {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
habitants: {
|
habitants: {
|
||||||
type: connectionDefinitions({name: DB.User.name, nodeType: DB.User.graphql_type}).connectionType,
|
type: habitants_connection,
|
||||||
description: "Returns list of house's habitants.",
|
description: "Returns list of house's habitants.",
|
||||||
args: connectionArgs,
|
args: connectionArgs,
|
||||||
resolve: (house, args) => {
|
resolve: (house, args) => {
|
||||||
@@ -69,10 +78,11 @@ var House = DB.sequelize.define(NAME, {
|
|||||||
return house.getHabitants(params);
|
return house.getHabitants(params);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}),
|
};
|
||||||
|
},
|
||||||
interfaces: [nodeInterface]
|
interfaces: [nodeInterface]
|
||||||
});
|
});
|
||||||
},
|
}
|
||||||
getPowerDataByTime: (start_date, end_date, page)=>{
|
getPowerDataByTime: (start_date, end_date, page)=>{
|
||||||
var params = extend({
|
var params = extend({
|
||||||
order: 'time ASC',
|
order: 'time ASC',
|
||||||
|
|||||||
@@ -34,7 +34,13 @@ var PowerDatum = DB.sequelize.define(NAME, {
|
|||||||
},
|
},
|
||||||
classMethods: {
|
classMethods: {
|
||||||
set: ()=>{
|
set: ()=>{
|
||||||
|
PowerDatum.associate();
|
||||||
|
PowerDatum.defineGraphQLType();
|
||||||
|
},
|
||||||
|
associate: ()=>{
|
||||||
PowerDatum.belongsTo(DB.House);
|
PowerDatum.belongsTo(DB.House);
|
||||||
|
},
|
||||||
|
defineGraphQLType: ()=>{
|
||||||
PowerDatum.graphql_type = new GraphQLObjectType({
|
PowerDatum.graphql_type = new GraphQLObjectType({
|
||||||
name: NAME,
|
name: NAME,
|
||||||
description: 'A person who uses our app',
|
description: 'A person who uses our app',
|
||||||
|
|||||||
@@ -38,25 +38,32 @@ var User = DB.sequelize.define(NAME, {
|
|||||||
},
|
},
|
||||||
classMethods: {
|
classMethods: {
|
||||||
set: ()=>{
|
set: ()=>{
|
||||||
|
User.associate();
|
||||||
|
User.defineGraqhQLType()
|
||||||
|
},
|
||||||
|
associate: ()=>{
|
||||||
User.belongsTo(DB.House);
|
User.belongsTo(DB.House);
|
||||||
|
},
|
||||||
|
defineGraqhQLType: ()=>{
|
||||||
User.graphql_type = new GraphQLObjectType({
|
User.graphql_type = new GraphQLObjectType({
|
||||||
name: NAME,
|
name: NAME,
|
||||||
description: 'A house',
|
description: 'A house',
|
||||||
fields: () => ({
|
fields: () => {
|
||||||
|
var {connectionType: house_connection} = connectionDefinitions({name: DB.House.name, nodeType: DB.House.graphql_type});
|
||||||
|
return {
|
||||||
id: globalIdField(NAME),
|
id: globalIdField(NAME),
|
||||||
username: {
|
username: {
|
||||||
type: new GraphQLNonNull(GraphQLString)
|
type: new GraphQLNonNull(GraphQLString)
|
||||||
},
|
},
|
||||||
house: {
|
house: {
|
||||||
type: connectionDefinitions({name: DB.House.name, nodeType: DB.House.graphql_type}).connectionType,
|
type: house_connection,
|
||||||
description: "Returns user's house.",
|
description: "Returns user's house.",
|
||||||
args: connectionArgs,
|
|
||||||
ref: DB.PowerDatum.name,
|
|
||||||
resolve: (user, args) => {
|
resolve: (user, args) => {
|
||||||
return user.getHouse();
|
return user.getHouse();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}),
|
};
|
||||||
|
},
|
||||||
interfaces: [nodeInterface]
|
interfaces: [nodeInterface]
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,34 +0,0 @@
|
|||||||
import React from 'react';
|
|
||||||
import Relay from 'react-relay';
|
|
||||||
|
|
||||||
class App extends React.Component {
|
|
||||||
render() {
|
|
||||||
return (
|
|
||||||
<div>
|
|
||||||
<h1>Widget list</h1>
|
|
||||||
<ul>
|
|
||||||
{this.props.viewer.widgets.edges.map(edge =>
|
|
||||||
<li key={edge.node.id}>{edge.node.name} (ID: {edge.node.id})</li>
|
|
||||||
)}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export default Relay.createContainer(App, {
|
|
||||||
fragments: {
|
|
||||||
viewer: () => Relay.QL`
|
|
||||||
fragment on User {
|
|
||||||
widgets(first: 10) {
|
|
||||||
edges {
|
|
||||||
node {
|
|
||||||
id,
|
|
||||||
name,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
`,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
Reference in New Issue
Block a user