GithubHelp home page GithubHelp logo

ariesw / sql-to-graphql Goto Github PK

View Code? Open in Web Editor NEW

This project forked from rexxars/sql-to-graphql

0.0 2.0 0.0 444 KB

Generate a GraphQL API based on your SQL database structure

License: MIT License

JavaScript 94.79% CSS 5.12% HTML 0.09%

sql-to-graphql's Introduction

sql-to-graphql

Generate GraphQL schemas and server based on SQL table structure.

What?

GraphQL is pretty awesome, but getting started can be difficult - especially if you are unfamiliar with the concepts it introduces.

sql-to-graphql is a command-line utility that can help you get started. You give it the credentials to an SQL database (MySQL, PostgreSQL and SQLite currently) and it will inspect the tables it finds and do the following:

  • Generate GraphQL-types for each table (including resolvers)
  • Generate an HTTP-server based on Hapi that accepts GraphQL queries
  • Sets up a basic web-frontend that lets you query the server

Disclaimer

This utility is intended to help people get started with GraphQL. It is NOT intended to be used in production.

Installation

npm install -g sql-to-graphql

Usage

sql2graphql [options]

Options:

  • --relay, -r - Generate Relay-style schema (boolean [default: false])
  • --output-dir, -o - Directory to use when generating app (string [required])
  • --es6 - Use ES6 for generated code (boolean [default: false])
  • --database, --db - Database name (string [required])
  • --db-filename - Database filename, used for SQLite (string)
  • --host, -h - Hostname of database server (string [default: "localhost"])
  • --port, -P - Port number of database server (number)
  • --user, -u - Username to use when connecting (string [default: "root"])
  • --password, -p - Password to use when connecting (string [default: ""])
  • --table, -t - Tables to generate type schemas for (array [default: "*"])
  • --backend, -b - Type of database (string [default: "mysql"])
  • --strip-suffix - Remove a suffix from table names when generating types (array)
  • --strip-prefix - Remove a prefix from table names when generating types (array)
  • --interactive, -i - Interactive mode (boolean [default: false])
  • --colors, -c - Colorize the code output (boolean [default: false])
  • --use-tabs - Use tabs for indentation (boolean [default: false])
  • --tab-width - Width of tabs (number [default: 2])
  • --quote - Quote style (single/double) (string [default: "single"])
  • --default-description - The description to use for columns without a comment (string [default: "@TODO DESCRIBE ME"])
  • --unaliased-primary-keys Disable aliasing of primary key fields to "id" for each type (boolean [default: false])
  • --help - Show help (boolean)

A note about connections

At the moment, sql-to-graphql tries to guess connections between tables based on naming conventions. This is far from fool-proof, but here's how it works:

Given you have a table called users (or user) and a table called posts (or post) and the posts table have a column called user_id, it will create a connection called user on the Post-type, giving you the User this post belongs to. It will also create a connection on the User-type named posts, which will return all the posts belonging to this User.

How these connections look depends on the options used (namely, --relay).

License

MIT-licensed. See LICENSE.

sql-to-graphql's People

Contributors

rexxars avatar jtomson-mdsol avatar kbrabrand avatar deanmcpherson avatar

Watchers

James Cloos avatar Aries Widodo avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.