Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including nicassa-parser-db with all npm packages installed. Try it out:

var nicassaParserDb = require("nicassa-parser-db")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

nicassa-parser-db v0.0.9

CLI based schema 2 JSON parser for Sequelize

Nicassa DB Parser

nicassa-parser-db is a CLI toolkit for reading Database Schema for MS-SQL, MySQL, PostgreSQL and SQLite 3. It's intended to be used with nicassa-generator for source code generation.

Installation

$ sudo npm install -g nicassa-parser-db

Please note nicassa-parser-db is written in TypeScript.

Features

  • Support for MS-SQL, MySQL, PostgreSQL and SQLite 3
  • Creates a JSON Configuration file containing the Database Schema definition
  • Optional storage of the connection string (highly Sequelize compatible)
  • Updates the Schema (e.g. after a Database migration) and keeps the rest of the file

Usage

# create a new schema file
$ nicassa-parser-db init -f schema.json
# optional step: edit the schema and add a connection string
$ vi schema.json
  • example for sqlite
  • check the Sequelize Documentation for more informations
{
  "formatVersion": "1.0",
  "sequelizeConnect": {
    "options": {
      "dialect": "sqlite",
      "storage": "schema.db"
    }
  }
}
# create sqlite3 demo database
$ sqlite3 schema.db
CREATE TABLE Roles (
    RoleID  INTEGER PRIMARY KEY AUTOINCREMENT,
    RoleName    TEXT NOT NULL
);

CREATE TABLE Users (
    UserID  INTEGER PRIMARY KEY AUTOINCREMENT,
    RoleID  INTEGER NOT NULL,
    UserName    TEXT NOT NULL,

    FOREIGN KEY (RoleID) REFERENCES Roles(RoleID)
);
# update the schema (if you added the connection string)
$ nicassa-db-parser update -f schema.json
# update the schema (connection string as parameter, e.g. MS-SQL, MySQL, PostgreSQL)
$ nicassa-db-parser update -f schema.json -u 'postgres://user:pass@example.com:5432/dbname'

Filters

{
    "filter": {
      "excludeTables": false,
      "excludeViews": false,
      "exculdeColumns": [],
      "exculde": [],
      "only": []
    }
}
  • excludeTables (boolean): enables / disables the use of tables
  • excludeViews (boolean): enables / disables the use of views
  • exculdeColumns (string[]): array with names for excluding columns in tables and views. You can also specify "table.column" to ignore only a specific column in a view or table.
  • exculde (string[]): array with names for excluding tables / views
  • only (string[]): ignores the exclude section, takes only views/tables with the given name, honors excludeColumns

Example output

{
  "nicassaParserDB": {
    "formatVersion": "1.0",
    "lastUpdateUTC": "Mon, 02 Jan 2017 23:43:48 GMT",
    "sequelizeConnect": {
      "options": {
        "dialect": "sqlite",
        "storage": "./test.db",
        "benchmark": true,
        "logging": false
      }
    },
    "filter": {
      "excludeTables": false,
      "excludeViews": false,
      "exculdeColumns": [],
      "exculde": [],
      "only": []
    },
    "schema": {
      "dialect": "sqlite",
      "tables": [
        {
          "name": "Roles",
          "columns": [
            {
              "name": "RoleID",
              "dataType": "INTEGER",
              "nullable": true,
              "defaultValue": null,
              "length": null,
              "precision": null,
              "pk": true,
              "referencedTableName": null,
              "referencedColumnName": null
            },
            {
              "name": "RoleName",
              "dataType": "TEXT",
              "nullable": false,
              "defaultValue": null,
              "length": null,
              "precision": null,
              "pk": false,
              "referencedTableName": null,
              "referencedColumnName": null
            }
          ]
        },
        {
          "name": "Users",
          "columns": [
            {
              "name": "UserID",
              "dataType": "INTEGER",
              "nullable": true,
              "defaultValue": null,
              "length": null,
              "precision": null,
              "pk": true,
              "referencedTableName": null,
              "referencedColumnName": null
            },
            {
              "name": "RoleID",
              "dataType": "INTEGER",
              "nullable": false,
              "defaultValue": null,
              "length": null,
              "precision": null,
              "pk": false,
              "referencedTableName": "Roles",
              "referencedColumnName": "RoleID"
            },
            {
              "name": "UserName",
              "dataType": "TEXT",
              "nullable": false,
              "defaultValue": null,
              "length": null,
              "precision": null,
              "pk": false,
              "referencedTableName": null,
              "referencedColumnName": null
            }
          ]
        }
      ],
      "views": []
    }
  }
}

Resources

Metadata

RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free