@dbml/cli 3.0.0 → 3.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/__test__/dbml2sql/filename --mysql --out-file/out-files/schema.sql +1 -1
  2. package/__test__/dbml2sql/filename --out-file/out-files/schema.sql +1 -1
  3. package/__test__/dbml2sql/filename --postgres --out-file/out-files/schema.sql +1 -1
  4. package/__test__/dbml2sql/filenames --mysql --out-file/out-files/schema.sql +1 -1
  5. package/__test__/dbml2sql/filenames --out-file/out-files/schema.sql +1 -1
  6. package/__test__/dbml2sql/filenames --postgres --out-file/out-files/schema.sql +1 -1
  7. package/__test__/dbml2sql/multiple_schema_mssql/out-files/multiple_schema.out.sql +1 -1
  8. package/__test__/dbml2sql/multiple_schema_mysql/out-files/multiple_schema.out.sql +1 -1
  9. package/__test__/dbml2sql/multiple_schema_pg/out-files/multiple_schema.out.sql +1 -1
  10. package/__test__/dbml2sql/syntax-error/dbml-error.log +57 -0
  11. package/__test__/dbml2sql/syntax-error/stdout.txt +1 -1
  12. package/__test__/sql2dbml/filenames --mysql --out-file/dbml-error.log +215 -0
  13. package/__test__/sql2dbml/filenames --mysql --out-file/expect-out-files/schema.dbml +1 -1
  14. package/__test__/sql2dbml/filenames --mysql --out-file/in-files/business.sql +1 -1
  15. package/__test__/sql2dbml/filenames --mysql --out-file/out-files/schema.dbml +1 -1
  16. package/__test__/sql2dbml/filenames --mysql stdout/dbml-error.log +218 -0
  17. package/__test__/sql2dbml/filenames --mysql stdout/in-files/business.sql +1 -1
  18. package/__test__/sql2dbml/filenames --mysql stdout/stdout.txt +1 -1
  19. package/__test__/sql2dbml/multiple_schema_mysql/expect-out-files/multiple_schema.out.dbml +75 -32
  20. package/__test__/sql2dbml/multiple_schema_mysql/in-files/multiple_schema.in.sql +36 -3
  21. package/__test__/sql2dbml/multiple_schema_mysql/out-files/multiple_schema.out.dbml +75 -32
  22. package/__test__/sql2dbml/multiple_schema_pg/dbml-error.log +52 -0
  23. package/__test__/sql2dbml/syntax-error/dbml-error.log +633 -0
  24. package/__test__/sql2dbml/syntax-error/stdout.txt +3 -2
  25. package/__test__/sql2dbml/syntax-error-duplicate-endpoints --mssql/dbml-error.log +1755 -0
  26. package/__test__/sql2dbml/syntax-error-duplicate-endpoints --mysql/dbml-error.log +1755 -0
  27. package/bin/dbml-error.log +0 -0
  28. package/dbml-error.log +195 -0
  29. package/lib/cli/config.js +3 -0
  30. package/lib/cli/import.js +3 -0
  31. package/lib/cli/index.js +1 -1
  32. package/lib/cli/utils.js +1 -1
  33. package/package.json +3 -3
  34. package/src/cli/config.js +3 -0
  35. package/src/cli/import.js +1 -0
  36. package/src/cli/index.js +1 -0
  37. package/src/cli/utils.js +1 -1
@@ -34,7 +34,7 @@ Table "rental" {
34
34
  "rental_date" datetime
35
35
  "inventory_id" int
36
36
  "customer_id" int
37
- "return_date" ddatetime
37
+ "return_date" datetime
38
38
  "staff_id" int
39
39
  "last_update" timestamp
40
40
  }
@@ -22,30 +22,6 @@ Enum "users_pg2_enum" {
22
22
  "female2"
23
23
  }
24
24
 
25
- Enum "ecommerce_users_ejs_enum" {
26
- "created2"
27
- "running2"
28
- "done2"
29
- "failure2"
30
- }
31
-
32
- Enum "ecommerce_users_ejs2_enum" {
33
- "created2"
34
- "running2"
35
- "done2"
36
- "failure2"
37
- }
38
-
39
- Enum "ecommerce_users_eg_enum" {
40
- "male"
41
- "female"
42
- }
43
-
44
- Enum "ecommerce_users_eg2_enum" {
45
- "male2"
46
- "female2"
47
- }
48
-
49
25
  Table "users" {
50
26
  "id" int [pk]
51
27
  "name" varchar(255)
@@ -58,32 +34,94 @@ Table "users" {
58
34
  Table "products" {
59
35
  "id" int [pk]
60
36
  "name" varchar(255) [note: 'Product name']
61
- Note: 'Notes about products table'
37
+ }
38
+
39
+ Table "orders" {
40
+ "id1" int
41
+ "id2" int
42
+ "pid" int
43
+ "name" varchar(255)
44
+ "name2" varchar(255)
45
+
46
+ Indexes {
47
+ (id1, id2) [pk, type: hash, name: "CPK_1"]
48
+ (name, name2) [type: btree, unique, name: "I_UNIQUE_1"]
49
+ (id1, id2) [type: hash, name: "INDEX_2"]
50
+ }
51
+ Note: 'this is table orders'
52
+ }
53
+
54
+ Table "orders2" {
55
+ "id1" int
56
+ "id2" int
57
+ "pid" int
58
+
59
+ Indexes {
60
+ (id1, id2) [pk, name: "testCPK"]
61
+ }
62
+ }
63
+
64
+ Table "orders4" {
65
+ "id1" int
66
+ "id2" int
67
+
68
+ Indexes {
69
+ (id1, id2) [pk, name: "PK_orders4_id1_id2"]
70
+ }
62
71
  }
63
72
 
64
73
  Ref "FK_1":"schemaA"."locations"."id" < "schemaA"."products"."lid" [delete: cascade]
65
74
 
75
+ Ref:"schemaA"."products"."id" < "orders"."pid"
76
+
77
+ Ref:"schemaA"."products"."id" < "orders2"."pid"
78
+
79
+ Ref "CFK_1":"orders".("id1", "id2") < "orders2".("id1", "id2") [update: set null, delete: cascade]
80
+
66
81
  Ref:"users"."id" < "ecommerce"."users"."id"
67
82
 
68
- Ref:"users"."name" < "ecommerce"."users"."id"
83
+ Ref "name_optional":"users"."name" < "ecommerce"."users"."id"
69
84
 
70
85
  Ref:"ecommerce"."users"."id" < "schemaA"."products"."name"
71
86
 
72
87
  Ref:"users"."id" < "schemaA"."locations"."name"
73
88
 
89
+ Enum "ecommerce"."users_ejs_enum" {
90
+ "created2"
91
+ "running2"
92
+ "done2"
93
+ "failure2"
94
+ }
95
+
96
+ Enum "ecommerce"."users_ejs2_enum" {
97
+ "created2"
98
+ "running2"
99
+ "done2"
100
+ "failure2"
101
+ }
102
+
103
+ Enum "ecommerce"."users_eg_enum" {
104
+ "male"
105
+ "female"
106
+ }
107
+
108
+ Enum "ecommerce"."users_eg2_enum" {
109
+ "male2"
110
+ "female2"
111
+ }
112
+
74
113
  Table "ecommerce"."users" {
75
114
  "id" int [pk]
76
115
  "name" varchar(255)
77
- "ejs" ecommerce_users_ejs_enum
78
- "ejs2" ecommerce_users_ejs2_enum
79
- "eg" ecommerce_users_eg_enum
80
- "eg2" ecommerce_users_eg2_enum
81
- Note: 'Table users of schema ecommerce'
116
+ "ejs" ecommerce.users_ejs_enum
117
+ "ejs2" ecommerce.users_ejs2_enum
118
+ "eg" ecommerce.users_eg_enum
119
+ "eg2" ecommerce.users_eg2_enum
82
120
  }
83
121
 
84
122
  Table "schemaA"."products" {
85
123
  "id" int [pk]
86
- "name" varchar(255)
124
+ "name" varchar(255) [note: 'Sample field comment on multiples schema']
87
125
  "lid" int
88
126
  }
89
127
 
@@ -91,3 +129,8 @@ Table "schemaA"."locations" {
91
129
  "id" int [pk]
92
130
  "name" varchar(255)
93
131
  }
132
+
133
+ Table "schemaB"."orders3" {
134
+ "id1" int [pk]
135
+ "id2" int
136
+ }
@@ -16,7 +16,7 @@ CREATE TABLE `users` (
16
16
  CREATE TABLE `products` (
17
17
  `id` int PRIMARY KEY,
18
18
  `name` varchar(255) COMMENT 'Product name'
19
- ) COMMENT = 'Notes about products table';
19
+ );
20
20
 
21
21
  CREATE TABLE `ecommerce`.`users` (
22
22
  `id` int PRIMARY KEY,
@@ -25,11 +25,11 @@ CREATE TABLE `ecommerce`.`users` (
25
25
  `ejs2` ENUM ('created2', 'running2', 'done2', 'failure2'),
26
26
  `eg` ENUM ('male', 'female'),
27
27
  `eg2` ENUM ('male2', 'female2')
28
- ) COMMENT = 'Table users of schema ecommerce';
28
+ );
29
29
 
30
30
  CREATE TABLE `schemaA`.`products` (
31
31
  `id` int PRIMARY KEY,
32
- `name` varchar(255),
32
+ `name` varchar(255) COMMENT 'Sample field comment on multiples schema',
33
33
  `lid` int,
34
34
  CONSTRAINT `FK_1` FOREIGN KEY (`lid`) REFERENCES `schemaA`.`locations` (`id`) ON DELETE CASCADE
35
35
  );
@@ -39,6 +39,39 @@ CREATE TABLE `schemaA`.`locations` (
39
39
  `name` varchar(255)
40
40
  );
41
41
 
42
+ CREATE TABLE `orders` (
43
+ `id1` int,
44
+ `id2` int,
45
+ `pid` int REFERENCES `schemaA`.`products`(id),
46
+ `name` varchar(255),
47
+ `name2` varchar(255),
48
+ CONSTRAINT `CPK_1` PRIMARY KEY testtest USING HASH (`id1`, id2),
49
+ CONSTRAINT `I_UNIQUE_1` UNIQUE KEY testtest2 USING BTREE (name, `name2`),
50
+ KEY `INDEX_2` USING HASH (id1, id2)
51
+ ) COMMENT "this is table orders";
52
+
53
+ CREATE TABLE `orders2` (
54
+ `id1` int,
55
+ `id2` int,
56
+ `pid` int REFERENCES `schemaA`.`products`(id),
57
+ CONSTRAINT PRIMARY KEY testCPK (`id1`, id2),
58
+ CONSTRAINT `CFK_1` FOREIGN KEY (`id1`, id2) REFERENCES orders (id1, `id2`) ON UPDATE SET NULL ON DELETE CASCADE
59
+ );
60
+
61
+ CREATE TABLE schemaB.`orders3` (
62
+ id1 int,
63
+ id2 int
64
+ );
65
+
66
+ ALTER TABLE `schemaB`.orders3 ADD PRIMARY KEY (id1);
67
+
68
+ CREATE TABLE `orders4` (
69
+ id1 int,
70
+ `id2` int
71
+ );
72
+
73
+ ALTER TABLE orders4 ADD CONSTRAINT `PK_orders4_id1_id2` PRIMARY KEY (id1, id2);
74
+
42
75
  ALTER TABLE `ecommerce`.`users` ADD FOREIGN KEY (`id`) REFERENCES `users` (`id`);
43
76
 
44
77
  ALTER TABLE `ecommerce`.`users` ADD CONSTRAINT `name_optional` FOREIGN KEY (`id`) REFERENCES `users` (`name`);
@@ -22,30 +22,6 @@ Enum "users_pg2_enum" {
22
22
  "female2"
23
23
  }
24
24
 
25
- Enum "ecommerce_users_ejs_enum" {
26
- "created2"
27
- "running2"
28
- "done2"
29
- "failure2"
30
- }
31
-
32
- Enum "ecommerce_users_ejs2_enum" {
33
- "created2"
34
- "running2"
35
- "done2"
36
- "failure2"
37
- }
38
-
39
- Enum "ecommerce_users_eg_enum" {
40
- "male"
41
- "female"
42
- }
43
-
44
- Enum "ecommerce_users_eg2_enum" {
45
- "male2"
46
- "female2"
47
- }
48
-
49
25
  Table "users" {
50
26
  "id" int [pk]
51
27
  "name" varchar(255)
@@ -58,32 +34,94 @@ Table "users" {
58
34
  Table "products" {
59
35
  "id" int [pk]
60
36
  "name" varchar(255) [note: 'Product name']
61
- Note: 'Notes about products table'
37
+ }
38
+
39
+ Table "orders" {
40
+ "id1" int
41
+ "id2" int
42
+ "pid" int
43
+ "name" varchar(255)
44
+ "name2" varchar(255)
45
+
46
+ Indexes {
47
+ (id1, id2) [pk, type: hash, name: "CPK_1"]
48
+ (name, name2) [type: btree, unique, name: "I_UNIQUE_1"]
49
+ (id1, id2) [type: hash, name: "INDEX_2"]
50
+ }
51
+ Note: 'this is table orders'
52
+ }
53
+
54
+ Table "orders2" {
55
+ "id1" int
56
+ "id2" int
57
+ "pid" int
58
+
59
+ Indexes {
60
+ (id1, id2) [pk, name: "testCPK"]
61
+ }
62
+ }
63
+
64
+ Table "orders4" {
65
+ "id1" int
66
+ "id2" int
67
+
68
+ Indexes {
69
+ (id1, id2) [pk, name: "PK_orders4_id1_id2"]
70
+ }
62
71
  }
63
72
 
64
73
  Ref "FK_1":"schemaA"."locations"."id" < "schemaA"."products"."lid" [delete: cascade]
65
74
 
75
+ Ref:"schemaA"."products"."id" < "orders"."pid"
76
+
77
+ Ref:"schemaA"."products"."id" < "orders2"."pid"
78
+
79
+ Ref "CFK_1":"orders".("id1", "id2") < "orders2".("id1", "id2") [update: set null, delete: cascade]
80
+
66
81
  Ref:"users"."id" < "ecommerce"."users"."id"
67
82
 
68
- Ref:"users"."name" < "ecommerce"."users"."id"
83
+ Ref "name_optional":"users"."name" < "ecommerce"."users"."id"
69
84
 
70
85
  Ref:"ecommerce"."users"."id" < "schemaA"."products"."name"
71
86
 
72
87
  Ref:"users"."id" < "schemaA"."locations"."name"
73
88
 
89
+ Enum "ecommerce"."users_ejs_enum" {
90
+ "created2"
91
+ "running2"
92
+ "done2"
93
+ "failure2"
94
+ }
95
+
96
+ Enum "ecommerce"."users_ejs2_enum" {
97
+ "created2"
98
+ "running2"
99
+ "done2"
100
+ "failure2"
101
+ }
102
+
103
+ Enum "ecommerce"."users_eg_enum" {
104
+ "male"
105
+ "female"
106
+ }
107
+
108
+ Enum "ecommerce"."users_eg2_enum" {
109
+ "male2"
110
+ "female2"
111
+ }
112
+
74
113
  Table "ecommerce"."users" {
75
114
  "id" int [pk]
76
115
  "name" varchar(255)
77
- "ejs" ecommerce_users_ejs_enum
78
- "ejs2" ecommerce_users_ejs2_enum
79
- "eg" ecommerce_users_eg_enum
80
- "eg2" ecommerce_users_eg2_enum
81
- Note: 'Table users of schema ecommerce'
116
+ "ejs" ecommerce.users_ejs_enum
117
+ "ejs2" ecommerce.users_ejs2_enum
118
+ "eg" ecommerce.users_eg_enum
119
+ "eg2" ecommerce.users_eg2_enum
82
120
  }
83
121
 
84
122
  Table "schemaA"."products" {
85
123
  "id" int [pk]
86
- "name" varchar(255)
124
+ "name" varchar(255) [note: 'Sample field comment on multiples schema']
87
125
  "lid" int
88
126
  }
89
127
 
@@ -91,3 +129,8 @@ Table "schemaA"."locations" {
91
129
  "id" int [pk]
92
130
  "name" varchar(255)
93
131
  }
132
+
133
+ Table "schemaB"."orders3" {
134
+ "id1" int [pk]
135
+ "id2" int
136
+ }
@@ -129,3 +129,55 @@ SyntaxError: Expected space but "." found.
129
129
  at importHandler (C:\Users\Inspiron101\Desktop\Holistics\dbml\packages\dbml-cli\src\cli\import.js:28:7)
130
130
  {"start":{"offset":1227,"line":67,"column":39},"end":{"offset":1228,"line":67,"column":40}}
131
131
 
132
+ 2023-12-26T12:09:25.581Z
133
+ SyntaxError: You have a syntax error at "multiple_schema.in.sql".
134
+ at C:\Users\rikim\Desktop\Holistics\dbx\dbml\packages\dbml-cli\lib\cli\utils.js:48:13
135
+ at Array.forEach (<anonymous>)
136
+ at generate (C:\Users\rikim\Desktop\Holistics\dbx\dbml\packages\dbml-cli\lib\cli\utils.js:39:14)
137
+ at importHandler (C:\Users\rikim\Desktop\Holistics\dbx\dbml\packages\dbml-cli\lib\cli\import.js:27:27)
138
+ at Object.sql2dbml (C:\Users\rikim\Desktop\Holistics\dbx\dbml\packages\dbml-cli\lib\cli\index.js:27:23)
139
+ at Object.<anonymous> (C:\Users\rikim\Desktop\Holistics\dbx\dbml\packages\dbml-cli\bin\sql2dbml.js:4:19)
140
+ at Module._compile (node:internal/modules/cjs/loader:1155:14)
141
+ at Object.Module._extensions..js (node:internal/modules/cjs/loader:1209:10)
142
+ at Module.load (node:internal/modules/cjs/loader:1033:32)
143
+ at Function.Module._load (node:internal/modules/cjs/loader:868:12)
144
+
145
+ ROOT_ERROR:
146
+ TypeError: Cannot read properties of undefined (reading 'reportAttemptingFullContext')
147
+ at C:\Users\rikim\Desktop\Holistics\dbx\dbml\node_modules\antlr4\dist\antlr4.node.cjs:1:42818
148
+ at Array.map (<anonymous>)
149
+ at vt.reportAttemptingFullContext (C:\Users\rikim\Desktop\Holistics\dbx\dbml\node_modules\antlr4\dist\antlr4.node.cjs:1:42808)
150
+ at se.reportAttemptingFullContext (C:\Users\rikim\Desktop\Holistics\dbx\dbml\node_modules\antlr4\dist\antlr4.node.cjs:1:82908)
151
+ at se.execATN (C:\Users\rikim\Desktop\Holistics\dbx\dbml\node_modules\antlr4\dist\antlr4.node.cjs:1:68929)
152
+ at se.adaptivePredict (C:\Users\rikim\Desktop\Holistics\dbx\dbml\node_modules\antlr4\dist\antlr4.node.cjs:1:67715)
153
+ at PostgreSQLParser.opt_type_modifiers (C:\Users\rikim\Desktop\Holistics\dbx\dbml\packages\dbml-core\lib\parse\ANTLR\parsers\postgresql\PostgreSQLParser.js:3:1146777)
154
+ at PostgreSQLParser.generictype (C:\Users\rikim\Desktop\Holistics\dbx\dbml\packages\dbml-core\lib\parse\ANTLR\parsers\postgresql\PostgreSQLParser.js:3:1146255)
155
+ at PostgreSQLParser.simpletypename (C:\Users\rikim\Desktop\Holistics\dbx\dbml\packages\dbml-core\lib\parse\ANTLR\parsers\postgresql\PostgreSQLParser.js:3:1139174)
156
+ at PostgreSQLParser.typename (C:\Users\rikim\Desktop\Holistics\dbx\dbml\packages\dbml-core\lib\parse\ANTLR\parsers\postgresql\PostgreSQLParser.js:3:1136757)
157
+
158
+ 2023-12-26T12:13:43.717Z
159
+ SyntaxError: You have a syntax error at "multiple_schema.in.sql".
160
+ at C:\Users\rikim\Desktop\Holistics\dbx\dbml\packages\dbml-cli\lib\cli\utils.js:48:13
161
+ at Array.forEach (<anonymous>)
162
+ at generate (C:\Users\rikim\Desktop\Holistics\dbx\dbml\packages\dbml-cli\lib\cli\utils.js:39:14)
163
+ at importHandler (C:\Users\rikim\Desktop\Holistics\dbx\dbml\packages\dbml-cli\lib\cli\import.js:27:27)
164
+ at Object.sql2dbml (C:\Users\rikim\Desktop\Holistics\dbx\dbml\packages\dbml-cli\lib\cli\index.js:27:23)
165
+ at Object.<anonymous> (C:\Users\rikim\Desktop\Holistics\dbx\dbml\packages\dbml-cli\bin\sql2dbml.js:4:19)
166
+ at Module._compile (node:internal/modules/cjs/loader:1155:14)
167
+ at Object.Module._extensions..js (node:internal/modules/cjs/loader:1209:10)
168
+ at Module.load (node:internal/modules/cjs/loader:1033:32)
169
+ at Function.Module._load (node:internal/modules/cjs/loader:868:12)
170
+
171
+ ROOT_ERROR:
172
+ TypeError: Cannot read properties of undefined (reading 'reportAttemptingFullContext')
173
+ at C:\Users\rikim\Desktop\Holistics\dbx\dbml\node_modules\antlr4\dist\antlr4.node.cjs:1:42818
174
+ at Array.map (<anonymous>)
175
+ at vt.reportAttemptingFullContext (C:\Users\rikim\Desktop\Holistics\dbx\dbml\node_modules\antlr4\dist\antlr4.node.cjs:1:42808)
176
+ at se.reportAttemptingFullContext (C:\Users\rikim\Desktop\Holistics\dbx\dbml\node_modules\antlr4\dist\antlr4.node.cjs:1:82908)
177
+ at se.execATN (C:\Users\rikim\Desktop\Holistics\dbx\dbml\node_modules\antlr4\dist\antlr4.node.cjs:1:68929)
178
+ at se.adaptivePredict (C:\Users\rikim\Desktop\Holistics\dbx\dbml\node_modules\antlr4\dist\antlr4.node.cjs:1:67715)
179
+ at PostgreSQLParser.opt_type_modifiers (C:\Users\rikim\Desktop\Holistics\dbx\dbml\packages\dbml-core\lib\parse\ANTLR\parsers\postgresql\PostgreSQLParser.js:3:1146777)
180
+ at PostgreSQLParser.generictype (C:\Users\rikim\Desktop\Holistics\dbx\dbml\packages\dbml-core\lib\parse\ANTLR\parsers\postgresql\PostgreSQLParser.js:3:1146255)
181
+ at PostgreSQLParser.simpletypename (C:\Users\rikim\Desktop\Holistics\dbx\dbml\packages\dbml-core\lib\parse\ANTLR\parsers\postgresql\PostgreSQLParser.js:3:1139174)
182
+ at PostgreSQLParser.typename (C:\Users\rikim\Desktop\Holistics\dbx\dbml\packages\dbml-core\lib\parse\ANTLR\parsers\postgresql\PostgreSQLParser.js:3:1136757)
183
+