-
Notifications
You must be signed in to change notification settings - Fork 38
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Refactor to support plugin like babel #59
Comments
First draft of Plugins Read Database Schema PluginsMotivationA read schema plugin should read a schema (collection/table definition) and return an object describing it. Examples
Templates PluginsMotivationCreateGraphql should output a different file for a different option provided, for instance: output a raw mutation or a relay mutation Examples
we need to define inputs and outputs of these plugins |
I can imagine it to handle schema from multiple types of databases but how would that be for different templates? |
Also, how do you plan on starting, should #43 wait for it? Turning the We should also have a |
A template plugin could have an option parameter, like -t for template |
@sibelius: what do you mean? I meant, how will we implement a template plugin? Will we prepare all the variables, pass it to the plugin and it will return the files? |
Yep, I think so, we need to define the inputs and outputs of each plugin |
So, I started working on this, I thought the following as a blueprint for a export default {
pre: (arguments) => {
const {
config, // The content of `.graphqlrc`, will be the default if it doesn't exist
} = arguments;
console.log('this is a pre hook function');
return {
fields, // The fields generated on the plugin
files, // Array of objects, e.g.: [{ name: 'ExampleAddMutation.js', content: 'Content of file }]
};
},
post: (arguments) => {
const {
config, // The content of `.graphqlrc`, will be the default if it doesn't exist,
fields, // The fields of the schema
} = arguments;
console.log('this is a post hook function');
return {}; // What would this return?
},
}; Would love your opinions on this, @sibelius & @felippepuhle. Also, the plugins would be installed as a {
"directories": {
...
"connection": "connection",
"loader": "loader",
"model": "model",
...
},
"plugins": [
"create-graphql-plugin-mongoose",
"create-graphql-plugin-sequelize",
...
]
} The generator would then call each plugin based on the order defined, so it would call the mongoose one and then sequelize with the results brought from mongoose. Still have to figure out how we will deal with files. |
Good content on Babel plugins: https://github.com/thejameskyle/babel-handbook/blob/master/translations/en/plugin-handbook.md |
Babel plugin object example:
each babel plugin returns an object like this.
we should think in CreateGraphQL PluginObject as well.
mongoose
schema to a plugin;relay
templates to a plugin (figure out how to best do this);plugins
property on.graphqlrc
.The text was updated successfully, but these errors were encountered: