#javascript #sql #json #sequelize.js
#javascript #sql #json #sequelize.js
Вопрос:
Я хочу создать доступный или из файла. JSON
JS-Object
.sql
Каков наилучший способ сделать это, или есть ли какие-либо доступные решения для этого.
Или есть какое-нибудь хорошее решение для создания sequelize
файла модели из .sql
мой файл .sql:
CREATE TABLE `AuthenticationSettings` (
`AUTSET_Id` int PRIMARY KEY AUTO_INCREMENT,
`updated_at` timestamp );
CREATE TABLE `ClinicAuthentiation` (
`CLINAUT_Id` int PRIMARY KEY AUTO_INCREMENT,
`updated_at` timestamp );
ALTER TABLE `AuthenticationSettings` ADD FOREIGN KEY (`AUTSET_Id`) REFERENCES `ClinicAuthentiation` (`AUTSET_Id`);
Пример JSON
, который я хочу создать (это всего лишь пример, я бы принял любой файл, с которым я могу работать):
{
"AuthenticationSettings" : {
"type" : "create",
"fields" : {
"AUTSET_Id" : "Integer"
...
}
}
Комментарии:
1. Не могли бы вы описать свой вариант использования? Зачем вам нужна схема базы данных в этом формате?
2. система использует множество микросервисов с различными базами данных, ORMs aso. Я хочу ввести один ORM (sequelize) для каждого микросервиса. Лучший способ — автоматически сгенерировать файл модели sequelize .js из инструкции mysql. Но я не могу заставить его работать
Ответ №1:
Если вы хотите преобразовать схему SQL в объект JSON, вы можете использовать sql-ddl-to-json-schema, это не очень полнофункционально, но может работать для вашего варианта использования. Например
const { Parser } = require('sql-ddl-to-json-schema');
const parser = new Parser('mysql');
const sql = `
CREATE TABLE AuthenticationSettings (
AUTSET_Id int PRIMARY KEY AUTO_INCREMENT,
updated_at timestamp
);
`;
const options = {};
const jsonSchemaDocuments = parser.feed(sql)
.toJsonSchemaArray(options);
console.log(jsonSchemaDocuments[0])
это преобразует и отобразит результат в виде
{
'$schema': 'http://json-schema.org/draft-07/schema',
'$comment': 'JSON Schema for AuthenticationSettings table',
'$id': 'AuthenticationSettings',
title: 'AuthenticationSettings',
type: 'object',
required: [ 'AUTSET_Id' ],
definitions: {
AUTSET_Id: {
'$comment': 'primary key',
type: 'integer',
minimum: 1,
maximum: 2147483647
},
updated_at: { type: 'string' }
},
properties: {
AUTSET_Id: { '$ref': '#/definitions/AUTSET_Id' },
updated_at: { '$ref': '#/definitions/updated_at' }
}
}