generate-schema

Effortlessly convert your JSON Object to JSON Schema, Mongoose Schema, or a Generic template for quick documentation / upstart.

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
generate-schema
1,020322.6.07 years ago9 years agoMinified + gzip package size for generate-schema in KB

Readme

Generate Schemas
Convert JSON Objects to MySQL Table Schema, JSON Schema, Mongoose Schema, ClickHouse Schema, Google BigQuery, or a Generic template for documentation, code generation, and more.
!Build Statustravis-imagetravis-url !versionnpm-versionnpm-url !Licensenpm-licenselicense-url !Downloadsnpm-downloadsnpm-url

Table of Contents

Options REPL Mode
+ [Example](#example)
+ Example + Methods
- [`g.generic(Object object)`](#ggenericobject-object)
- [`g.mysql([String tableName,] Mixed object)`](#gmysqlstring-tablename-mixed-object)
- [`g.json([String title,] Mixed object)`](#gjsonstring-title-mixed-object)
- [`g.mongoose(Object object)`](#gmongooseobject-object)
- [`g.bigquery(Object object)`](#gbigqueryobject-object)
- [`g.clickhouse([String tableName,] Mixed object, String dateField)`](#gclickhousestring-tablename-mixed-object)
Installation
Install with npm:
$ npm i --save generate-schema

Optionally, add -g to the above if you want the generate-schema command line executable.
CLI
Usage: generate-schema [options ...] [file]

Common Options:

  -h, --help         output usage information
  -V, --version      output the version number
  -q, --quiet        Skip help message in program output

Mode Options:
  -g, --generic      Generic JSON Primitives schema output
  -j, --json-schema  JSON Schema output
  -s, --mysql        MySQL Table Schema output
  -m, --mongoose     Mongoose Schema output
  -b, --big-query    Google BigQuery Schema output
  -c, --clickhouse   Clickhouse Table Schema output

REPL Mode

When no file is specified, generate-schema enters a REPL mode.

Example

$ generate-schema -b
generate-schema v2.5.1 (bigquery)
Type "exit" to quit.
Type {a:"b"} to see an example.
> {a:"b"}
[
  {
    "name": "a",
    "type": "STRING",
    "mode": "NULLABLE"
  }
]
Usage
var GenerateSchema = require('generate-schema')

Example

// Capture Schema Output
var schema = GenerateSchema.json('Product', [
    {
        "id": 2,
        "name": "An ice sculpture",
        "price": 12.50,
        "tags": ["cold", "ice"],
        "dimensions": {
            "length": 7.0,
            "width": 12.0,
            "height": 9.5
        },
        "warehouseLocation": {
            "latitude": -78.75,
            "longitude": 20.4
        }
    },
    {
        "id": 3,
        "name": "A blue mouse",
        "price": 25.50,
        "dimensions": {
            "length": 3.1,
            "width": 1.0,
            "height": 1.0
        },
        "warehouseLocation": {
            "latitude": 54.4,
            "longitude": -32.7
        }
    }
])

Outputs:
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "title": "Product Set",
  "type": "array",
  "items": {
    "type": "object",
    "properties": {
      "id": {
        "type": "number"
      },
      "name": {
        "type": "string"
      },
      "price": {
        "type": "number"
      },
      "tags": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "dimensions": {
        "type": "object",
        "properties": {
          "length": {
            "type": "number"
          },
          "width": {
            "type": "number"
          },
          "height": {
            "type": "number"
          }
        }
      },
      "warehouseLocation": {
        "type": "object",
        "properties": {
          "latitude": {
            "type": "number"
          },
          "longitude": {
            "type": "number"
          }
        }
      }
    },
    "required": [
      "id",
      "name",
      "price",
      "dimensions",
      "warehouseLocation"
    ],
    "title": "Product"
  }
}

Methods

g.generic(Object object)

Generates a generic schema from object. Property types are described using primitives.

g.mysql([String tableName,] Mixed object)

Generates MySQL Table Schema from object.
  • tableName is optional, defaults to generic
  • object must be of type Object or Array

g.json([String title,] Mixed object)

Generates JSON Schema from object.
  • title is optional
  • object must be of type Object or Array

g.mongoose(Object object)

Generates a Mongoose Schemamongoose-schema from object.

g.bigquery(Object object)

Generates a Google BigQuerybigquery-schema schema from object.

g.clickhouse([String tableName,] Mixed object, String dateField)

Generates ClickHouse Table Schemaclickhouse-schema from object.
  • tableName is optional, defaults to generic
  • object must be of type Object or Array
  • dateField Date field for ENGINE, must be of type Date
License
MITlicense-url