mirror of
https://github.com/drawdb-io/drawdb.git
synced 2025-05-24 18:39:12 +00:00
Parse indexes and enums from dbml
This commit is contained in:
parent
d76a9e9ff8
commit
7fa23fc13b
@ -35,19 +35,21 @@ export function fromDBML(src) {
|
||||
const ast = parser.parse(src, "dbml");
|
||||
|
||||
const tables = [];
|
||||
const enums = [];
|
||||
|
||||
for (const schema of ast.schemas) {
|
||||
for (const table of schema.tables) {
|
||||
let parsedTable = {};
|
||||
parsedTable.id = tables.length;
|
||||
parsedTable.name = table.name;
|
||||
parsedTable.comment = "";
|
||||
parsedTable.comment = table.note ?? "";
|
||||
parsedTable.color = "#175e7a";
|
||||
parsedTable.fields = [];
|
||||
parsedTable.indices = [];
|
||||
|
||||
for (const column of table.fields) {
|
||||
const field = {};
|
||||
|
||||
field.id = parsedTable.fields.length;
|
||||
field.name = column.name;
|
||||
field.type = column.type.type_name.toUpperCase();
|
||||
@ -62,15 +64,36 @@ export function fromDBML(src) {
|
||||
parsedTable.fields.push(field);
|
||||
}
|
||||
|
||||
for (const idx of table.indexes) {
|
||||
const parsedIndex = {};
|
||||
|
||||
parsedIndex.id = idx.id - 1;
|
||||
parsedIndex.fields = idx.columns.map((x) => x.value);
|
||||
parsedIndex.name =
|
||||
idx.name ?? `${parsedTable.name}_index_${parsedIndex.id}`;
|
||||
parsedIndex.unique = !!idx.unique;
|
||||
|
||||
parsedTable.indices.push(parsedIndex);
|
||||
}
|
||||
|
||||
console.log(table);
|
||||
|
||||
tables.push(parsedTable);
|
||||
}
|
||||
|
||||
for (const schemaEnum of schema.enums) {
|
||||
const parsedEnum = {};
|
||||
|
||||
parsedEnum.name = schemaEnum.name;
|
||||
parsedEnum.values = schemaEnum.values.map((x) => x.name);
|
||||
|
||||
enums.push(parsedEnum);
|
||||
}
|
||||
}
|
||||
|
||||
console.log(ast);
|
||||
|
||||
const diagram = { tables };
|
||||
const diagram = { tables, enums };
|
||||
|
||||
arrangeTables(diagram);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user