Generate Schemas
Convert JSON Objects to MySQL, JSON Schema, Mongoose, Google BigQuery, Swag...
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.
Table of Contents
Installation
CLI
Options
REPL Mode
Example
Usage
Example
Methods
g.generic(Object object)
g.mysql([String tableName,] Mixed object)
g.json([String title,] Mixed object)
g.mongoose(Object object)
g.bigquery(Object object)
g.clickhouse([String tableName,] Mixed object, String dateField)
License
Installation
Install with npm :
- ``` shell
- $ npm i --save generate-schema
- ```
CLI
- ``` null
- 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-schemaenters a REPL mode.
Example
- ``` null
- $ 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
- ``` js
- var GenerateSchema = require('generate-schema')
- ```
Example
- ``` null
- // 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:
- ``` json
- {
- "$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.
tableNameis optional, defaults to generic
objectmust be of type Objector Array
g.json([String title,] Mixed object)
Generates JSON Schema from object.
titleis optional
objectmust be of type Objector Array
g.mongoose(Object object)
Generates a Mongoose Schema from object.
g.bigquery(Object object)
Generates a Google BigQuery schema from object.
g.clickhouse([String tableName,] Mixed object, String dateField)
Generates ClickHouse Table Schema from object.
tableNameis optional, defaults to generic
objectmust be of type Objector Array
dateFieldDate field for ENGINE, must be of type Date
License
MIT