make update schema gulp task

This commit is contained in:
Eric Hulburd
2016-01-31 18:08:42 -06:00
parent 51a0e40f55
commit 8af7d33d08
9 changed files with 58 additions and 106 deletions

View File

@@ -7,22 +7,26 @@ import graphQLHTTP from 'express-graphql';
import path from 'path';
import webpack from 'webpack';
import WebpackDevServer from 'webpack-dev-server';
import {Schema} from './config/graphql/schema';
import schema from './config/graphql/schema';
import DB from './config/database';
const APP_PORT = 3000;
const GRAPHQL_PORT = 8080;
var graphql_server = express();
// Expose a GraphQL endpoint
graphql_server.use('/', graphQLHTTP({
graphiql: true,
pretty: true,
schema: Schema,
}));
graphql_server.listen(GRAPHQL_PORT, () => console.log(
`GraphQL Server is now running on http://localhost:${GRAPHQL_PORT}`
));
DB.sync.then(()=>{
// Expose a GraphQL endpoint
graphql_server.use('/', graphQLHTTP({
graphiql: true,
pretty: true,
schema: schema(),
}));
graphql_server.listen(GRAPHQL_PORT, () => console.log(
`GraphQL Server is now running on http://localhost:${GRAPHQL_PORT}`
));
});
/*
* Compile and Serve Relay App w/ Webpack

View File

@@ -50,7 +50,7 @@ type Query {
type User implements Node {
id: ID!
username: String!
house(after: String, first: Int, before: String, last: Int): HouseConnection
house: HouseConnection
}
type UserConnection {

View File

@@ -633,48 +633,7 @@
{
"name": "house",
"description": "Returns user's house.",
"args": [
{
"name": "after",
"description": null,
"type": {
"kind": "SCALAR",
"name": "String",
"ofType": null
},
"defaultValue": null
},
{
"name": "first",
"description": null,
"type": {
"kind": "SCALAR",
"name": "Int",
"ofType": null
},
"defaultValue": null
},
{
"name": "before",
"description": null,
"type": {
"kind": "SCALAR",
"name": "String",
"ofType": null
},
"defaultValue": null
},
{
"name": "last",
"description": null,
"type": {
"kind": "SCALAR",
"name": "Int",
"ofType": null
},
"defaultValue": null
}
],
"args": [],
"type": {
"kind": "OBJECT",
"name": "HouseConnection",

View File

@@ -1,7 +1,9 @@
import gulp from 'gulp';
import yargs from 'yargs';
import DB from './config/database';
import {PowerDataSeed, HouseSeed, UserSeed} from './lib/tasks/seed_data'
import {PowerDataSeed, HouseSeed, UserSeed} from './lib/tasks/seed_data';
import updateSchema from './lib/tasks/update_schema';
gulp.task('generate_power_csv', function(done){
DB.sync().then(()=>{

View File

@@ -0,0 +1,35 @@
import fs from 'fs';
import path from 'path';
import { graphql, GraphQLSchema } from 'graphql';
import { introspectionQuery, printSchema } from 'graphql/utilities';
import DB from './../../config/database';
import schema from './../../config/graphql/schema';
DB.sync().then(()=>{
var Schema = schema();
// Save JSON of full schema introspection for Babel Relay Plugin to use
(async () => {
var result = await (graphql(Schema, introspectionQuery));
if (result.errors) {
console.error(
'ERROR introspecting schema: ',
JSON.stringify(result.errors, null, 2)
);
} else {
fs.writeFileSync(
path.join(__dirname, './../../config/graphql/schema.json'),
JSON.stringify(result, null, 2)
);
}
})();
// Save user readable type system shorthand of schema
fs.writeFileSync(
path.join(__dirname, './../../config/graphql/schema.graphql'),
printSchema(Schema)
);
});

View File

@@ -37,7 +37,8 @@ var House = DB.sequelize.define(NAME, {
},
classMethods: {
set: ()=>{
House.associate();
House.defineGraphQLType();
},
associate: ()=>{
House.hasMany(DB.PowerDatum, {as: 'PowerData'});
@@ -82,7 +83,7 @@ var House = DB.sequelize.define(NAME, {
},
interfaces: [nodeInterface]
});
}
},
getPowerDataByTime: (start_date, end_date, page)=>{
var params = extend({
order: 'time ASC',

View File

@@ -4,7 +4,7 @@
"private": true,
"scripts": {
"start": "babel-node ./app.express.js",
"update-schema": "babel-node --debug ./scripts/updateSchema.js"
"update-schema": "babel-node ./lib/tasks/update_schema.js"
},
"dependencies": {
"body-parser": "~1.12.0",

View File

@@ -1,15 +0,0 @@
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')
);

View File

@@ -1,36 +1,2 @@
#!/usr/bin/env babel-node --optional es7.asyncFunctions
import fs from 'fs';
import path from 'path';
import schema from '../config/graphql/schema';
import { graphql, GraphQLSchema } from 'graphql';
import { introspectionQuery, printSchema } from 'graphql/utilities';
import DB from './../config/database';
DB.sync().then(()=>{
var Schema = schema();
// Save JSON of full schema introspection for Babel Relay Plugin to use
(async () => {
var result = await (graphql(Schema, introspectionQuery));
if (result.errors) {
console.error(
'ERROR introspecting schema: ',
JSON.stringify(result.errors, null, 2)
);
} else {
fs.writeFileSync(
path.join(__dirname, '../config/graphql/schema.json'),
JSON.stringify(result, null, 2)
);
}
})();
// Save user readable type system shorthand of schema
fs.writeFileSync(
path.join(__dirname, '../config/graphql/schema.graphql'),
printSchema(Schema)
);
});