Skip to content

d1soft/schema-docs

 
 

Repository files navigation

SchemaDocs - database documentation generator

Features

  • Generates docs from many databases at once

  • Supported adapters and specified things

    • [-] MySQL
      • [+] Tables
      • [+] Columns
      • [+] Triggers
      • [+] Events
      • [+] Foreign keys
      • [+] Indexes
      • [+] Stored functions and stored procedures
      • [-] Partitions
      • [-] Checks (MySQL >=8.0.16)
      • [-] Additional schema and tables info
    • [-] PostgreSQL
    • [-] Microsoft SQL Server
    • [-] SQLite
      • [+] Tables
      • [-] Indexes
      • [-] Foreign keys
      • [-] Additional schema and tables info
    • [-] MongoDB
  • Templates

    • Full schema objects info allowed at any template
    • HTML
      • Table of contents in sidebar with anchor links
      • Anchor links from foreign keys info
    • Markdown
      • Simple full-featured table style
    • Confluence Storage Format
      • Rich macros using: code-blocks and spoilers for DDL
      • Table of contents with anchor links
    • Confluence Wiki Format
      • Simple full-featured table style
    • JSON
      • Include full Schema object structure
  • ERD

    • Converts Schema object to text schema with relationships
    • Generates beatify diagrams in png, jpg, pdf, svg and more formats

Guide

Install:

npm -g install schema-docs yarn add global schema-docs 

Usage:

schema-docs \ --database mysql://user:password/localhost:3306/database \ --templaters json,md,html \ --ignore-tables _migrations,_hashes --output ./docs/db --erd schema-docs -c ./configs/schema-docs.json 

Configuration

You can pass configuration by two ways:

  1. As CLI arguments (only one database at once)
  2. As json file (any much databases at once)

CLI arguments

Option Description Default Example
--database, -d database connection string - mysql://user@localhost/database
--config, -c jSON-configuration file path - ./config/schema-docs.json
--templaters, -t comma-separated list of names used templaters json,html html,md
--output, -o output documentation root directory ./schema-docs ./documentation/db
--ignore-tables, -i comma-separated list with names to be ignored "" users_creditnals,admin_users
--erd, -e generate ER-diagram flag none -

⚠️ Required one of --database or --config option.

JSON configuration file

Sample configuration file you can find at config.example.json

Structure:

{ //databases configuration "databases": [ //simple connection with connection string { //connection name "name": "databaseOne", //connection string "connection": "mysql://connection", //generate ER-diagram "erd": true, //ignored tables list "ignoreTable": [ "_migrations" ] }, //build connection string from env-configuration { "name": "databaseTwo", //env file info "envConfig": { //path to env file "path": "/path/to/.env", //connection string template with vars from env config "connection": "mysq://{DB_USER}:{DB_PASSWORD}@{DB_HOST}:{DB_PORT}/{DB_NAME}" }, "erd": true, "ignoreTable": [ "_migrations" ] }, //build connection string from json-configuration { "name": "databaseThree", //json file info "jsonConfig": { //path to json config "path": "path/to/config.json", //connection string template with vars from json (allowed nesting) "connection": "mysql://{database.user}:{database.password}" }, "erd": true, "ignoreTable": [ "_migrations" ] } ], //templaters configuration "templaters": [ //simple templater name "json", //with overrided template { "html": { "template": "path/to/template" } }, "md", "confluence-wiki", "confluence-store" ], //output documentation directory  "output": "/path/to/save" }

Related projects

Releases

No releases published

Packages

No packages published