- Notifications
You must be signed in to change notification settings - Fork0
A Graphql API generator based on Sequelize.
adamslogic/graphql-sequelize-generator
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Graphql-Sequelize-Generator (GSG) is a set of tools that will allow you toeasily generate a GraphQL API from your sequelize models.
It's a very good fit for POCs and MVPs, while also scaling pretty well thanks todataloader-sequelize.
The complete documentation car be foundhere
The tools provided by this library will allow you to:
- Query any model defined in your app through GraphQL.
- Auto-generate create/update/delete mutations.
- Define before/after hooks and all resolvers, including the mutations.
- Easily create custom mutations.
- Get an integrated interface to test your GraphQL API.
- Counts for each model can also be generated.
- Subscriptions auto-generated for mutations.
- Add custom fields/resolvers on auto-generated types.
- Easy integration withdataloader-sequelize
Add the lib and the peer dependencies of GraphQL-Sequelize-Generator:
yarn add graphql-sequelize-generator graphql sequelize graphql-sequelize @apollo/server dataloader-sequelize graphql-relay ws
If you need to initialize the project, please follow this Sequelize documentation page :Sequelize-Cli and Migrations
Create a file where you will set up your server and paste the following code. We used index.js (at the root of our example project):
// index.jsconst{ expressMiddleware}=require('@apollo/server/express4')constexpress=require('express')consthttp=require('http')constcors=require('cors')constjson=require('body-parser')const{ createContext,EXPECTED_OPTIONS_KEY}=require('dataloader-sequelize')constsetupServer=require('./schema')constmodels=require('./models')//Assuming "models" is your import of the Sequelize models folder, initialized by Sequelize-CliconstcreateServer=async(options={},globalPreCallback=()=>null)=>{constapp=express()options={spdy:{plain:true}, ...options,}consthttpServer=http.createServer(options,app)const{ server}=setupServer(globalPreCallback,httpServer)awaitserver.start()//server.applyMiddleware({ app, path: '/graphql' })app.use('/graphql',cors(),json(),expressMiddleware(server,{context:async({ req, connection})=>{constcontextDataloader=createContext(models.sequelize)// Connection is provided when a webSocket is connected.if(connection){// check connection for metadatareturn{ ...connection.context,[EXPECTED_OPTIONS_KEY]:contextDataloader,}}},}))awaitnewPromise((resolve)=>{httpServer.listen(process.env.PORT||8080,()=>{resolve()})console.log(`🚀 Server ready at http://localhost:${process.env.PORT||8080}/graphql`)})returnhttpServer}constcloseServer=async(server)=>{awaitPromise.all([newPromise((resolve)=>server.close(()=>resolve()))])}createServer()
You can easily start a project with graphql-sequelize-generator using these boilerplates:
- In JavaScript :GSG Boilerplate
- In TypeScript :GSG Typescript Boilerplate
About
A Graphql API generator based on Sequelize.
Resources
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
Packages0
Languages
- JavaScript71.4%
- TypeScript28.6%