Утилита генерации схемы БД для MySql db-schema-mysql

git clone git://git.appcode.pw/db-schema-mysql.git

Модуль генерирует файлы *.schema с наименованием сущностей.

var main = require('db-schema-mysql');
main(connectionString, outputPath, override);

,где:

  • connectionString: string — строка подключения к БД
  • outputPath: string — выходной каталог для хранения *.schema
  • override: boolean — необязательный параметр. Предназначен для указания принудительной перезаписи исходных файлов. Применяется в процессе настройки и тестирования

Структура файла *.schema

*.schema — файл типа json с комментариями. Хранит структуру таблицы, view, процедуры

//#overwrite
{
    "TABLE_NAME": "application_projects",
    "TABLE_TYPE": "BASE TABLE",
    "TABLE_TITLE": "Тип приложения",
    "PRIMARY_KEY": "id",
    "TABLE_COMMENT": '',
    "FIELDS":[{
        "COLUMN_NAME": "description",
        "COLUMN_DEFAULT_VALUE": ,
        "IS_NULLABLE": "NO",
        "DATA_TYPE": "text",
        "CHARACTER_MAXIMUM_LENGTH": 65535,
        "NUMERIC_PRECISION": ,
        "NUMERIC_SCALE": ,
        "COLUMN_KEY": "",
        "EXTRA": "",
        "COLUMN_COMMENT": "Описание",
        "REFERENCED_COLUMN_NAME": ,
        "REFERENCED_TABLE_NAME": 
    }, {
        "COLUMN_NAME": "id",
        "COLUMN_DEFAULT_VALUE": ,
        "IS_NULLABLE": "NO",
        "DATA_TYPE": "int",
        "CHARACTER_MAXIMUM_LENGTH": ,
        "NUMERIC_PRECISION": 10,
        "NUMERIC_SCALE": 0,
        "COLUMN_KEY": "PRI",
        "EXTRA": "auto_increment",
        "COLUMN_COMMENT": "Идентификатор",
        "REFERENCED_COLUMN_NAME": ,
        "REFERENCED_TABLE_NAME": 
    }, {
        "COLUMN_NAME": "name",
        "COLUMN_DEFAULT_VALUE": ,
        "IS_NULLABLE": "NO",
        "DATA_TYPE": "varchar",
        "CHARACTER_MAXIMUM_LENGTH": 255,
        "NUMERIC_PRECISION": ,
        "NUMERIC_SCALE": ,
        "COLUMN_KEY": "",
        "EXTRA": "",
        "COLUMN_COMMENT": "Наименование",
        "REFERENCED_COLUMN_NAME": ,
        "REFERENCED_TABLE_NAME": 
    }, {
        "COLUMN_NAME": "outputFileName",
        "COLUMN_DEFAULT_VALUE": ,
        "IS_NULLABLE": "NO",
        "DATA_TYPE": "varchar",
        "CHARACTER_MAXIMUM_LENGTH": 255,
        "NUMERIC_PRECISION": ,
        "NUMERIC_SCALE": ,
        "COLUMN_KEY": "",
        "EXTRA": "",
        "COLUMN_COMMENT": "Имя выходного файла",
        "REFERENCED_COLUMN_NAME": ,
        "REFERENCED_TABLE_NAME": 
    }]
}

, где:

  • TABLE_NAME: string — наименование сущности
  • TABLE_TYPE: string — тип сущности. Например BASE TABLE, VIEW, PROCEDURE
  • TABLE_TITLE: string — заголовок таблицы
  • TABLE_COMMENT: string — описание таблицы
  • PRIMARY_KEY: string — первичный ключ. Может быть пустым для VIEW и PROCEDURE
  • FIELDS: any[] — набор полей
    • COLUMN_NAME: string — наименование колонки
    • COLUMN_DEFAULT_VALUE: any — значение по умолчанию
    • IS_NULLABLE: string — YES — может быть null’ом, NO — не может быть null’ом
    • DATA_TYPE: string — тип колонки. Например text, int и т. д.
    • CHARACTER_MAXIMUM_LENGTH: number — длина строки. Указывается только для строковых типов
    • NUMERIC_PRECISION: number — длина числового поля
    • NUMERIC_SCALE: number — количество знаков после запятой для числового поля
    • COLUMN_KEY: string — тип колонки
      • PRI — является первичным ключом
      • MUL — является FK
    • EXTRA: string тип генерации для первичного ключа. Например auto_increment
    • COLUMN_COMMENT: string — описание колонки
    • REFERENCED_COLUMN_NAME: string — связь с колонкой другой таблицы. Указывается наименование колонки
    •  REFERENCED_TABLE_NAME: string — наименование таблицы с которой происходит связь

Выполнение через командную строку

node index connection=[connectionString] output=[output] override=[true|false]

, где

    • connection: string — строка подключения к БД
    • output: string — выходной каталог
    • override: boolean — переопределение данных
Сортировка колонок
Первичную сортировку колонок можно производить, если в наименовании колонки указывать будет указан префикс [e000]
Например:
[e100] Раздел1

Тогда schema будет выглядеть следующим образом:

{
    "TABLE_NAME": "application_projects",
    "TABLE_TYPE": "BASE TABLE",
    "TABLE_TITLE": "Тип приложения",
    "PRIMARY_KEY": "id",
    "TABLE_COMMENT": '',
    "FIELDS":[{
        "COLUMN_NAME": "description",
        "COLUMN_DEFAULT_VALUE": ,
        "IS_NULLABLE": "NO",
        "DATA_TYPE": "text",
        "CHARACTER_MAXIMUM_LENGTH": 65535,
        "NUMERIC_PRECISION": ,
        "NUMERIC_SCALE": ,
        "COLUMN_KEY": "",
        "EXTRA": "",
        "COLUMN_COMMENT": "Описание",
        "REFERENCED_COLUMN_NAME": ,
        "REFERENCED_TABLE_NAME": ,
        "ORDER": 100 // тут сортировка
    }, {
        "COLUMN_NAME": "id",
        "COLUMN_DEFAULT_VALUE": ,
        "IS_NULLABLE": "NO",
        "DATA_TYPE": "int",
        "CHARACTER_MAXIMUM_LENGTH": ,
        "NUMERIC_PRECISION": 10,
        "NUMERIC_SCALE": 0,
        "COLUMN_KEY": "PRI",
        "EXTRA": "auto_increment",
        "COLUMN_COMMENT": "Идентификатор",
        "REFERENCED_COLUMN_NAME": ,
        "REFERENCED_TABLE_NAME": ,
        "ORDER": 50 // тут сортировка
    }
...

Установка колонки по умолчанию

Для указания колонки по умолчанию применять:

[e100|d] Раздел1

В этом случаи для таблицы будет указан следующий параметр

{
    "TABLE_NAME": "application_projects",
    "TABLE_TYPE": "BASE TABLE",
    "TABLE_TITLE": "Тип приложения",
    "PRIMARY_KEY": "id",
    "TABLE_COMMENT": '',
    "DEFAULT_PROPERTY": "name"
...

, а для колонок будет указана следующая информация

...
        "REFERENCED_COLUMN_NAME": "id",
        "REFERENCED_TABLE_NAME": "sys_users",
        "ORDER": 90,
        "REFERENCED_DEFAULT_PROPERTY": "name"
...
Print Friendly, PDF & Email

Добавить комментарий