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"
...