@dbml/cli 5.0.0 → 5.2.0

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 (302) hide show
  1. package/.babelrc +2 -2
  2. package/{__test__ → __tests__}/cli.test.js +7 -7
  3. package/__tests__/db2dbml/mssql/dbml-error.log +11 -0
  4. package/{__test__ → __tests__}/db2dbml/mssql/expect-out-files/schema.dbml +35 -51
  5. package/{__test__ → __tests__}/db2dbml/mssql/schema.sql +13 -1
  6. package/__tests__/db2dbml/mysql/dbml-error.log +3 -0
  7. package/{__test__ → __tests__}/db2dbml/mysql/expect-out-files/schema.dbml +22 -2
  8. package/{__test__ → __tests__}/db2dbml/mysql/schema.sql +18 -3
  9. package/__tests__/db2dbml/postgres/dbml-error.log +7 -0
  10. package/{__test__ → __tests__}/db2dbml/postgres/expect-out-files/schema.dbml +28 -12
  11. package/{__test__ → __tests__}/db2dbml/postgres/schema.sql +14 -3
  12. package/{__test__ → __tests__}/db2dbml_bin.js +0 -1
  13. package/{__test__ → __tests__}/dbml2sql/filename --mysql --out-file/out-files/schema.sql +1 -1
  14. package/{__test__ → __tests__}/dbml2sql/filename --oracle --out-file/out-files/schema.sql +1 -1
  15. package/{__test__/dbml2sql/filename --postgres --out-file → __tests__/dbml2sql/filename --out-file}/out-files/schema.sql +1 -1
  16. package/{__test__/dbml2sql/filename --out-file → __tests__/dbml2sql/filename --postgres --out-file}/out-files/schema.sql +1 -1
  17. package/{__test__ → __tests__}/dbml2sql/filenames --mysql --out-file/out-files/schema.sql +1 -1
  18. package/{__test__ → __tests__}/dbml2sql/filenames --oracle --out-file/out-files/schema.sql +1 -1
  19. package/{__test__/dbml2sql/filenames --postgres --out-file → __tests__/dbml2sql/filenames --out-file}/out-files/schema.sql +1 -1
  20. package/{__test__/dbml2sql/filenames --out-file → __tests__/dbml2sql/filenames --postgres --out-file}/out-files/schema.sql +1 -1
  21. package/{__test__ → __tests__}/dbml2sql/multiple_schema_mssql/out-files/multiple_schema.out.sql +1 -1
  22. package/{__test__ → __tests__}/dbml2sql/multiple_schema_mysql/out-files/multiple_schema.out.sql +1 -1
  23. package/{__test__ → __tests__}/dbml2sql/multiple_schema_oracle/out-files/multiple_schema.out.sql +1 -1
  24. package/{__test__ → __tests__}/dbml2sql/multiple_schema_pg/out-files/multiple_schema.out.sql +1 -1
  25. package/__tests__/dbml2sql/syntax-error/dbml-error.log +9 -0
  26. package/{__test__ → __tests__}/dbml2sql_bin.js +0 -1
  27. package/__tests__/sql2dbml/custom-error-alter-table-column-not-found --oracle/in-files/schema.sql +6 -0
  28. package/__tests__/sql2dbml/custom-error-alter-table-column-not-found --oracle/options.json +8 -0
  29. package/__tests__/sql2dbml/custom-error-alter-table-column-not-found --oracle/stdout.txt +4 -0
  30. package/__tests__/sql2dbml/custom-error-alter-table-table-not-found --oracle/in-files/schema.sql +2 -0
  31. package/__tests__/sql2dbml/custom-error-alter-table-table-not-found --oracle/options.json +8 -0
  32. package/__tests__/sql2dbml/custom-error-alter-table-table-not-found --oracle/stdout.txt +4 -0
  33. package/__tests__/sql2dbml/custom-error-column-comment-column-not-found --oracle/in-files/schema.sql +6 -0
  34. package/__tests__/sql2dbml/custom-error-column-comment-column-not-found --oracle/options.json +8 -0
  35. package/__tests__/sql2dbml/custom-error-column-comment-column-not-found --oracle/stdout.txt +4 -0
  36. package/__tests__/sql2dbml/custom-error-column-comment-table-not-found --oracle/in-files/schema.sql +5 -0
  37. package/__tests__/sql2dbml/custom-error-column-comment-table-not-found --oracle/options.json +8 -0
  38. package/__tests__/sql2dbml/custom-error-column-comment-table-not-found --oracle/stdout.txt +4 -0
  39. package/__tests__/sql2dbml/custom-error-create-index-table-not-found --oracle/in-files/schema.sql +1 -0
  40. package/__tests__/sql2dbml/custom-error-create-index-table-not-found --oracle/options.json +8 -0
  41. package/__tests__/sql2dbml/custom-error-create-index-table-not-found --oracle/stdout.txt +4 -0
  42. package/__tests__/sql2dbml/custom-error-table-comment-table-not-found --oracle/in-files/schema.sql +5 -0
  43. package/__tests__/sql2dbml/custom-error-table-comment-table-not-found --oracle/options.json +8 -0
  44. package/__tests__/sql2dbml/custom-error-table-comment-table-not-found --oracle/stdout.txt +4 -0
  45. package/__tests__/sql2dbml/filename --oracle --out-file/expect-out-files/schema.dbml +83 -0
  46. package/__tests__/sql2dbml/filename --oracle --out-file/in-files/schema.sql +147 -0
  47. package/__tests__/sql2dbml/filename --oracle --out-file/options.json +8 -0
  48. package/__tests__/sql2dbml/filename --oracle --out-file/stdout.txt +1 -0
  49. package/__tests__/sql2dbml/syntax-error/dbml-error.log +9 -0
  50. package/__tests__/sql2dbml/syntax-error-duplicate-endpoints --mssql/dbml-error.log +9 -0
  51. package/__tests__/sql2dbml/syntax-error-duplicate-endpoints --mysql/dbml-error.log +9 -0
  52. package/{__test__ → __tests__}/sql2dbml_bin.js +0 -1
  53. package/bin/db2dbml.js +0 -1
  54. package/bin/dbml2sql.js +0 -1
  55. package/bin/sql2dbml.js +0 -1
  56. package/eslint.config.ts +96 -0
  57. package/jest.config.ts +13 -0
  58. package/lib/cli/index.js +1 -3
  59. package/lib/cli/utils.js +8 -6
  60. package/lib/helpers/logger.js +0 -2
  61. package/package.json +17 -14
  62. package/src/cli/index.js +1 -1
  63. package/src/cli/utils.js +5 -1
  64. package/src/helpers/logger.js +0 -1
  65. package/tsconfig.json +13 -5
  66. package/__test__/db2dbml/mssql/dbml-error.log +0 -337
  67. package/__test__/db2dbml/mysql/dbml-error.log +0 -230
  68. package/__test__/db2dbml/postgres/dbml-error.log +0 -63
  69. package/__test__/dbml2sql/syntax-error/dbml-error.log +0 -345
  70. package/__test__/sql2dbml/syntax-error/dbml-error.log +0 -342
  71. package/__test__/sql2dbml/syntax-error-duplicate-endpoints --mssql/dbml-error.log +0 -342
  72. package/__test__/sql2dbml/syntax-error-duplicate-endpoints --mysql/dbml-error.log +0 -339
  73. package/dbml-error.log +0 -0
  74. /package/{__test__ → __tests__}/db2dbml/mssql/options.json +0 -0
  75. /package/{__test__ → __tests__}/db2dbml/mssql/out-files/schema.dbml +0 -0
  76. /package/{__test__ → __tests__}/db2dbml/mssql/stdout.txt +0 -0
  77. /package/{__test__ → __tests__}/db2dbml/mysql/options.json +0 -0
  78. /package/{__test__ → __tests__}/db2dbml/mysql/out-files/schema.dbml +0 -0
  79. /package/{__test__ → __tests__}/db2dbml/mysql/stdout.txt +0 -0
  80. /package/{__test__ → __tests__}/db2dbml/postgres/options.json +0 -0
  81. /package/{__test__ → __tests__}/db2dbml/postgres/out-files/schema.dbml +0 -0
  82. /package/{__test__ → __tests__}/db2dbml/postgres/stdout.txt +0 -0
  83. /package/{__test__ → __tests__}/dbml2sql/filename --mysql --out-file/dbml-error.log +0 -0
  84. /package/{__test__ → __tests__}/dbml2sql/filename --mysql --out-file/expect-out-files/schema.sql +0 -0
  85. /package/{__test__ → __tests__}/dbml2sql/filename --mysql --out-file/in-files/schema.dbml +0 -0
  86. /package/{__test__ → __tests__}/dbml2sql/filename --mysql --out-file/options.json +0 -0
  87. /package/{__test__ → __tests__}/dbml2sql/filename --mysql --out-file/stdout.txt +0 -0
  88. /package/{__test__ → __tests__}/dbml2sql/filename --mysql stdout/dbml-error.log +0 -0
  89. /package/{__test__ → __tests__}/dbml2sql/filename --mysql stdout/in-files/schema.dbml +0 -0
  90. /package/{__test__ → __tests__}/dbml2sql/filename --mysql stdout/options.json +0 -0
  91. /package/{__test__ → __tests__}/dbml2sql/filename --mysql stdout/stdout.txt +0 -0
  92. /package/{__test__ → __tests__}/dbml2sql/filename --oracle --out-file/dbml-error.log +0 -0
  93. /package/{__test__ → __tests__}/dbml2sql/filename --oracle --out-file/expect-out-files/schema.sql +0 -0
  94. /package/{__test__ → __tests__}/dbml2sql/filename --oracle --out-file/in-files/schema.dbml +0 -0
  95. /package/{__test__ → __tests__}/dbml2sql/filename --oracle --out-file/options.json +0 -0
  96. /package/{__test__ → __tests__}/dbml2sql/filename --oracle --out-file/stdout.txt +0 -0
  97. /package/{__test__ → __tests__}/dbml2sql/filename --oracle stdout/dbml-error.log +0 -0
  98. /package/{__test__ → __tests__}/dbml2sql/filename --oracle stdout/in-files/schema.dbml +0 -0
  99. /package/{__test__ → __tests__}/dbml2sql/filename --oracle stdout/options.json +0 -0
  100. /package/{__test__ → __tests__}/dbml2sql/filename --oracle stdout/stdout.txt +0 -0
  101. /package/{__test__ → __tests__}/dbml2sql/filename --out-file/dbml-error.log +0 -0
  102. /package/{__test__ → __tests__}/dbml2sql/filename --out-file/expect-out-files/schema.sql +0 -0
  103. /package/{__test__ → __tests__}/dbml2sql/filename --out-file/in-files/schema.dbml +0 -0
  104. /package/{__test__ → __tests__}/dbml2sql/filename --out-file/options.json +0 -0
  105. /package/{__test__ → __tests__}/dbml2sql/filename --out-file/stdout.txt +0 -0
  106. /package/{__test__ → __tests__}/dbml2sql/filename --postgres --out-file/dbml-error.log +0 -0
  107. /package/{__test__ → __tests__}/dbml2sql/filename --postgres --out-file/expect-out-files/schema.sql +0 -0
  108. /package/{__test__ → __tests__}/dbml2sql/filename --postgres --out-file/in-files/schema.dbml +0 -0
  109. /package/{__test__ → __tests__}/dbml2sql/filename --postgres --out-file/options.json +0 -0
  110. /package/{__test__ → __tests__}/dbml2sql/filename --postgres --out-file/stdout.txt +0 -0
  111. /package/{__test__ → __tests__}/dbml2sql/filename --postgres stdout/dbml-error.log +0 -0
  112. /package/{__test__ → __tests__}/dbml2sql/filename --postgres stdout/in-files/schema.dbml +0 -0
  113. /package/{__test__ → __tests__}/dbml2sql/filename --postgres stdout/options.json +0 -0
  114. /package/{__test__ → __tests__}/dbml2sql/filename --postgres stdout/stdout.txt +0 -0
  115. /package/{__test__ → __tests__}/dbml2sql/filename stdout/dbml-error.log +0 -0
  116. /package/{__test__ → __tests__}/dbml2sql/filename stdout/in-files/schema.dbml +0 -0
  117. /package/{__test__ → __tests__}/dbml2sql/filename stdout/options.json +0 -0
  118. /package/{__test__ → __tests__}/dbml2sql/filename stdout/stdout.txt +0 -0
  119. /package/{__test__ → __tests__}/dbml2sql/filenames --mysql --out-file/dbml-error.log +0 -0
  120. /package/{__test__ → __tests__}/dbml2sql/filenames --mysql --out-file/expect-out-files/schema.sql +0 -0
  121. /package/{__test__ → __tests__}/dbml2sql/filenames --mysql --out-file/in-files/business.dbml +0 -0
  122. /package/{__test__ → __tests__}/dbml2sql/filenames --mysql --out-file/in-files/customer.dbml +0 -0
  123. /package/{__test__ → __tests__}/dbml2sql/filenames --mysql --out-file/in-files/inventory.dbml +0 -0
  124. /package/{__test__ → __tests__}/dbml2sql/filenames --mysql --out-file/options.json +0 -0
  125. /package/{__test__ → __tests__}/dbml2sql/filenames --mysql --out-file/stdout.txt +0 -0
  126. /package/{__test__ → __tests__}/dbml2sql/filenames --mysql stdout/dbml-error.log +0 -0
  127. /package/{__test__ → __tests__}/dbml2sql/filenames --mysql stdout/in-files/business.dbml +0 -0
  128. /package/{__test__ → __tests__}/dbml2sql/filenames --mysql stdout/in-files/customer.dbml +0 -0
  129. /package/{__test__ → __tests__}/dbml2sql/filenames --mysql stdout/in-files/inventory.dbml +0 -0
  130. /package/{__test__ → __tests__}/dbml2sql/filenames --mysql stdout/options.json +0 -0
  131. /package/{__test__ → __tests__}/dbml2sql/filenames --mysql stdout/stdout.txt +0 -0
  132. /package/{__test__ → __tests__}/dbml2sql/filenames --oracle --out-file/dbml-error.log +0 -0
  133. /package/{__test__ → __tests__}/dbml2sql/filenames --oracle --out-file/expect-out-files/schema.sql +0 -0
  134. /package/{__test__ → __tests__}/dbml2sql/filenames --oracle --out-file/in-files/business.dbml +0 -0
  135. /package/{__test__ → __tests__}/dbml2sql/filenames --oracle --out-file/in-files/customer.dbml +0 -0
  136. /package/{__test__ → __tests__}/dbml2sql/filenames --oracle --out-file/in-files/inventory.dbml +0 -0
  137. /package/{__test__ → __tests__}/dbml2sql/filenames --oracle --out-file/options.json +0 -0
  138. /package/{__test__ → __tests__}/dbml2sql/filenames --oracle --out-file/stdout.txt +0 -0
  139. /package/{__test__ → __tests__}/dbml2sql/filenames --oracle stdout/dbml-error.log +0 -0
  140. /package/{__test__ → __tests__}/dbml2sql/filenames --oracle stdout/in-files/business.dbml +0 -0
  141. /package/{__test__ → __tests__}/dbml2sql/filenames --oracle stdout/in-files/customer.dbml +0 -0
  142. /package/{__test__ → __tests__}/dbml2sql/filenames --oracle stdout/in-files/inventory.dbml +0 -0
  143. /package/{__test__ → __tests__}/dbml2sql/filenames --oracle stdout/options.json +0 -0
  144. /package/{__test__ → __tests__}/dbml2sql/filenames --oracle stdout/stdout.txt +0 -0
  145. /package/{__test__ → __tests__}/dbml2sql/filenames --out-file/dbml-error.log +0 -0
  146. /package/{__test__ → __tests__}/dbml2sql/filenames --out-file/expect-out-files/schema.sql +0 -0
  147. /package/{__test__ → __tests__}/dbml2sql/filenames --out-file/in-files/business.dbml +0 -0
  148. /package/{__test__ → __tests__}/dbml2sql/filenames --out-file/in-files/customer.dbml +0 -0
  149. /package/{__test__ → __tests__}/dbml2sql/filenames --out-file/in-files/inventory.dbml +0 -0
  150. /package/{__test__ → __tests__}/dbml2sql/filenames --out-file/options.json +0 -0
  151. /package/{__test__ → __tests__}/dbml2sql/filenames --out-file/stdout.txt +0 -0
  152. /package/{__test__ → __tests__}/dbml2sql/filenames --postgres --out-file/dbml-error.log +0 -0
  153. /package/{__test__ → __tests__}/dbml2sql/filenames --postgres --out-file/expect-out-files/schema.sql +0 -0
  154. /package/{__test__ → __tests__}/dbml2sql/filenames --postgres --out-file/in-files/business.dbml +0 -0
  155. /package/{__test__ → __tests__}/dbml2sql/filenames --postgres --out-file/in-files/customer.dbml +0 -0
  156. /package/{__test__ → __tests__}/dbml2sql/filenames --postgres --out-file/in-files/inventory.dbml +0 -0
  157. /package/{__test__ → __tests__}/dbml2sql/filenames --postgres --out-file/options.json +0 -0
  158. /package/{__test__ → __tests__}/dbml2sql/filenames --postgres --out-file/stdout.txt +0 -0
  159. /package/{__test__ → __tests__}/dbml2sql/filenames --postgres stdout/dbml-error.log +0 -0
  160. /package/{__test__ → __tests__}/dbml2sql/filenames --postgres stdout/in-files/business.dbml +0 -0
  161. /package/{__test__ → __tests__}/dbml2sql/filenames --postgres stdout/in-files/customer.dbml +0 -0
  162. /package/{__test__ → __tests__}/dbml2sql/filenames --postgres stdout/in-files/inventory.dbml +0 -0
  163. /package/{__test__ → __tests__}/dbml2sql/filenames --postgres stdout/options.json +0 -0
  164. /package/{__test__ → __tests__}/dbml2sql/filenames --postgres stdout/stdout.txt +0 -0
  165. /package/{__test__ → __tests__}/dbml2sql/filenames stdout/dbml-error.log +0 -0
  166. /package/{__test__ → __tests__}/dbml2sql/filenames stdout/in-files/business.dbml +0 -0
  167. /package/{__test__ → __tests__}/dbml2sql/filenames stdout/in-files/customer.dbml +0 -0
  168. /package/{__test__ → __tests__}/dbml2sql/filenames stdout/in-files/inventory.dbml +0 -0
  169. /package/{__test__ → __tests__}/dbml2sql/filenames stdout/options.json +0 -0
  170. /package/{__test__ → __tests__}/dbml2sql/filenames stdout/stdout.txt +0 -0
  171. /package/{__test__ → __tests__}/dbml2sql/multiple_schema_mssql/dbml-error.log +0 -0
  172. /package/{__test__ → __tests__}/dbml2sql/multiple_schema_mssql/expect-out-files/multiple_schema.out.sql +0 -0
  173. /package/{__test__ → __tests__}/dbml2sql/multiple_schema_mssql/in-files/multiple_schema.in.dbml +0 -0
  174. /package/{__test__ → __tests__}/dbml2sql/multiple_schema_mssql/options.json +0 -0
  175. /package/{__test__ → __tests__}/dbml2sql/multiple_schema_mssql/stdout.txt +0 -0
  176. /package/{__test__ → __tests__}/dbml2sql/multiple_schema_mysql/dbml-error.log +0 -0
  177. /package/{__test__ → __tests__}/dbml2sql/multiple_schema_mysql/expect-out-files/multiple_schema.out.sql +0 -0
  178. /package/{__test__ → __tests__}/dbml2sql/multiple_schema_mysql/in-files/multiple_schema.in.dbml +0 -0
  179. /package/{__test__ → __tests__}/dbml2sql/multiple_schema_mysql/options.json +0 -0
  180. /package/{__test__ → __tests__}/dbml2sql/multiple_schema_mysql/stdout.txt +0 -0
  181. /package/{__test__ → __tests__}/dbml2sql/multiple_schema_oracle/dbml-error.log +0 -0
  182. /package/{__test__ → __tests__}/dbml2sql/multiple_schema_oracle/expect-out-files/multiple_schema.out.sql +0 -0
  183. /package/{__test__ → __tests__}/dbml2sql/multiple_schema_oracle/in-files/multiple_schema.in.dbml +0 -0
  184. /package/{__test__ → __tests__}/dbml2sql/multiple_schema_oracle/options.json +0 -0
  185. /package/{__test__ → __tests__}/dbml2sql/multiple_schema_oracle/stdout.txt +0 -0
  186. /package/{__test__ → __tests__}/dbml2sql/multiple_schema_pg/dbml-error.log +0 -0
  187. /package/{__test__ → __tests__}/dbml2sql/multiple_schema_pg/expect-out-files/multiple_schema.out.sql +0 -0
  188. /package/{__test__ → __tests__}/dbml2sql/multiple_schema_pg/in-files/multiple_schema.in.dbml +0 -0
  189. /package/{__test__ → __tests__}/dbml2sql/multiple_schema_pg/options.json +0 -0
  190. /package/{__test__ → __tests__}/dbml2sql/multiple_schema_pg/stdout.txt +0 -0
  191. /package/{__test__ → __tests__}/dbml2sql/syntax-error/in-files/ecommerce.dbml +0 -0
  192. /package/{__test__ → __tests__}/dbml2sql/syntax-error/options.json +0 -0
  193. /package/{__test__ → __tests__}/dbml2sql/syntax-error/stdout.txt +0 -0
  194. /package/{__test__ → __tests__}/sql2dbml/filename --mssql --out-file/dbml-error.log +0 -0
  195. /package/{__test__ → __tests__}/sql2dbml/filename --mssql --out-file/expect-out-files/schema.dbml +0 -0
  196. /package/{__test__ → __tests__}/sql2dbml/filename --mssql --out-file/in-files/schema.sql +0 -0
  197. /package/{__test__ → __tests__}/sql2dbml/filename --mssql --out-file/options.json +0 -0
  198. /package/{__test__ → __tests__}/sql2dbml/filename --mssql --out-file/out-files/schema.dbml +0 -0
  199. /package/{__test__ → __tests__}/sql2dbml/filename --mssql --out-file/stdout.txt +0 -0
  200. /package/{__test__ → __tests__}/sql2dbml/filename --mysql --out-file/dbml-error.log +0 -0
  201. /package/{__test__ → __tests__}/sql2dbml/filename --mysql --out-file/expect-out-files/schema.dbml +0 -0
  202. /package/{__test__ → __tests__}/sql2dbml/filename --mysql --out-file/in-files/schema.sql +0 -0
  203. /package/{__test__ → __tests__}/sql2dbml/filename --mysql --out-file/options.json +0 -0
  204. /package/{__test__ → __tests__}/sql2dbml/filename --mysql --out-file/out-files/schema.dbml +0 -0
  205. /package/{__test__ → __tests__}/sql2dbml/filename --mysql --out-file/stdout.txt +0 -0
  206. /package/{__test__ → __tests__}/sql2dbml/filename --mysql stdout/dbml-error.log +0 -0
  207. /package/{__test__ → __tests__}/sql2dbml/filename --mysql stdout/in-files/schema.sql +0 -0
  208. /package/{__test__ → __tests__}/sql2dbml/filename --mysql stdout/options.json +0 -0
  209. /package/{__test__ → __tests__}/sql2dbml/filename --mysql stdout/stdout.txt +0 -0
  210. /package/{__test__ → __tests__}/sql2dbml/filename --out-file/dbml-error.log +0 -0
  211. /package/{__test__ → __tests__}/sql2dbml/filename --out-file/expect-out-files/schema.dbml +0 -0
  212. /package/{__test__ → __tests__}/sql2dbml/filename --out-file/in-files/schema.sql +0 -0
  213. /package/{__test__ → __tests__}/sql2dbml/filename --out-file/options.json +0 -0
  214. /package/{__test__ → __tests__}/sql2dbml/filename --out-file/out-files/schema.dbml +0 -0
  215. /package/{__test__ → __tests__}/sql2dbml/filename --out-file/stdout.txt +0 -0
  216. /package/{__test__ → __tests__}/sql2dbml/filename --postgres --out-file/dbml-error.log +0 -0
  217. /package/{__test__ → __tests__}/sql2dbml/filename --postgres --out-file/expect-out-files/schema.dbml +0 -0
  218. /package/{__test__ → __tests__}/sql2dbml/filename --postgres --out-file/in-files/schema.sql +0 -0
  219. /package/{__test__ → __tests__}/sql2dbml/filename --postgres --out-file/options.json +0 -0
  220. /package/{__test__ → __tests__}/sql2dbml/filename --postgres --out-file/out-files/schema.dbml +0 -0
  221. /package/{__test__ → __tests__}/sql2dbml/filename --postgres --out-file/stdout.txt +0 -0
  222. /package/{__test__ → __tests__}/sql2dbml/filename --postgres stdout/dbml-error.log +0 -0
  223. /package/{__test__ → __tests__}/sql2dbml/filename --postgres stdout/in-files/schema.sql +0 -0
  224. /package/{__test__ → __tests__}/sql2dbml/filename --postgres stdout/options.json +0 -0
  225. /package/{__test__ → __tests__}/sql2dbml/filename --postgres stdout/stdout.txt +0 -0
  226. /package/{__test__ → __tests__}/sql2dbml/filename --snowflake stdout/dbml-error.log +0 -0
  227. /package/{__test__ → __tests__}/sql2dbml/filename --snowflake stdout/in-files/schema.sql +0 -0
  228. /package/{__test__ → __tests__}/sql2dbml/filename --snowflake stdout/options.json +0 -0
  229. /package/{__test__ → __tests__}/sql2dbml/filename --snowflake stdout/stdout.txt +0 -0
  230. /package/{__test__ → __tests__}/sql2dbml/filename stdout/dbml-error.log +0 -0
  231. /package/{__test__ → __tests__}/sql2dbml/filename stdout/in-files/schema.sql +0 -0
  232. /package/{__test__ → __tests__}/sql2dbml/filename stdout/options.json +0 -0
  233. /package/{__test__ → __tests__}/sql2dbml/filename stdout/stdout.txt +0 -0
  234. /package/{__test__ → __tests__}/sql2dbml/filenames --mysql --out-file/dbml-error.log +0 -0
  235. /package/{__test__ → __tests__}/sql2dbml/filenames --mysql --out-file/expect-out-files/schema.dbml +0 -0
  236. /package/{__test__ → __tests__}/sql2dbml/filenames --mysql --out-file/in-files/business.sql +0 -0
  237. /package/{__test__ → __tests__}/sql2dbml/filenames --mysql --out-file/in-files/customer.sql +0 -0
  238. /package/{__test__ → __tests__}/sql2dbml/filenames --mysql --out-file/in-files/inventory.sql +0 -0
  239. /package/{__test__ → __tests__}/sql2dbml/filenames --mysql --out-file/options.json +0 -0
  240. /package/{__test__ → __tests__}/sql2dbml/filenames --mysql --out-file/out-files/schema.dbml +0 -0
  241. /package/{__test__ → __tests__}/sql2dbml/filenames --mysql --out-file/stdout.txt +0 -0
  242. /package/{__test__ → __tests__}/sql2dbml/filenames --mysql stdout/dbml-error.log +0 -0
  243. /package/{__test__ → __tests__}/sql2dbml/filenames --mysql stdout/in-files/business.sql +0 -0
  244. /package/{__test__ → __tests__}/sql2dbml/filenames --mysql stdout/in-files/customer.sql +0 -0
  245. /package/{__test__ → __tests__}/sql2dbml/filenames --mysql stdout/in-files/inventory.sql +0 -0
  246. /package/{__test__ → __tests__}/sql2dbml/filenames --mysql stdout/options.json +0 -0
  247. /package/{__test__ → __tests__}/sql2dbml/filenames --mysql stdout/stdout.txt +0 -0
  248. /package/{__test__ → __tests__}/sql2dbml/filenames --out-file/dbml-error.log +0 -0
  249. /package/{__test__ → __tests__}/sql2dbml/filenames --out-file/expect-out-files/schema.dbml +0 -0
  250. /package/{__test__ → __tests__}/sql2dbml/filenames --out-file/in-files/business.sql +0 -0
  251. /package/{__test__ → __tests__}/sql2dbml/filenames --out-file/in-files/customer.sql +0 -0
  252. /package/{__test__ → __tests__}/sql2dbml/filenames --out-file/in-files/inventory.sql +0 -0
  253. /package/{__test__ → __tests__}/sql2dbml/filenames --out-file/options.json +0 -0
  254. /package/{__test__ → __tests__}/sql2dbml/filenames --out-file/out-files/schema.dbml +0 -0
  255. /package/{__test__ → __tests__}/sql2dbml/filenames --out-file/stdout.txt +0 -0
  256. /package/{__test__ → __tests__}/sql2dbml/filenames --postgres --out-file/dbml-error.log +0 -0
  257. /package/{__test__ → __tests__}/sql2dbml/filenames --postgres --out-file/expect-out-files/schema.dbml +0 -0
  258. /package/{__test__ → __tests__}/sql2dbml/filenames --postgres --out-file/in-files/business.sql +0 -0
  259. /package/{__test__ → __tests__}/sql2dbml/filenames --postgres --out-file/in-files/customer.sql +0 -0
  260. /package/{__test__ → __tests__}/sql2dbml/filenames --postgres --out-file/in-files/inventory.sql +0 -0
  261. /package/{__test__ → __tests__}/sql2dbml/filenames --postgres --out-file/options.json +0 -0
  262. /package/{__test__ → __tests__}/sql2dbml/filenames --postgres --out-file/out-files/schema.dbml +0 -0
  263. /package/{__test__ → __tests__}/sql2dbml/filenames --postgres --out-file/stdout.txt +0 -0
  264. /package/{__test__ → __tests__}/sql2dbml/filenames --postgres stdout/dbml-error.log +0 -0
  265. /package/{__test__ → __tests__}/sql2dbml/filenames --postgres stdout/in-files/business.sql +0 -0
  266. /package/{__test__ → __tests__}/sql2dbml/filenames --postgres stdout/in-files/customer.sql +0 -0
  267. /package/{__test__ → __tests__}/sql2dbml/filenames --postgres stdout/in-files/inventory.sql +0 -0
  268. /package/{__test__ → __tests__}/sql2dbml/filenames --postgres stdout/options.json +0 -0
  269. /package/{__test__ → __tests__}/sql2dbml/filenames --postgres stdout/stdout.txt +0 -0
  270. /package/{__test__ → __tests__}/sql2dbml/filenames stdout/dbml-error.log +0 -0
  271. /package/{__test__ → __tests__}/sql2dbml/filenames stdout/in-files/business.sql +0 -0
  272. /package/{__test__ → __tests__}/sql2dbml/filenames stdout/in-files/customer.sql +0 -0
  273. /package/{__test__ → __tests__}/sql2dbml/filenames stdout/in-files/inventory.sql +0 -0
  274. /package/{__test__ → __tests__}/sql2dbml/filenames stdout/options.json +0 -0
  275. /package/{__test__ → __tests__}/sql2dbml/filenames stdout/stdout.txt +0 -0
  276. /package/{__test__ → __tests__}/sql2dbml/multiple_schema_mssql/dbml-error.log +0 -0
  277. /package/{__test__ → __tests__}/sql2dbml/multiple_schema_mssql/expect-out-files/multiple_schema.out.dbml +0 -0
  278. /package/{__test__ → __tests__}/sql2dbml/multiple_schema_mssql/in-files/multiple_schema.in.sql +0 -0
  279. /package/{__test__ → __tests__}/sql2dbml/multiple_schema_mssql/options.json +0 -0
  280. /package/{__test__ → __tests__}/sql2dbml/multiple_schema_mssql/out-files/multiple_schema.out.dbml +0 -0
  281. /package/{__test__ → __tests__}/sql2dbml/multiple_schema_mssql/stdout.txt +0 -0
  282. /package/{__test__ → __tests__}/sql2dbml/multiple_schema_mysql/dbml-error.log +0 -0
  283. /package/{__test__ → __tests__}/sql2dbml/multiple_schema_mysql/expect-out-files/multiple_schema.out.dbml +0 -0
  284. /package/{__test__ → __tests__}/sql2dbml/multiple_schema_mysql/in-files/multiple_schema.in.sql +0 -0
  285. /package/{__test__ → __tests__}/sql2dbml/multiple_schema_mysql/options.json +0 -0
  286. /package/{__test__ → __tests__}/sql2dbml/multiple_schema_mysql/out-files/multiple_schema.out.dbml +0 -0
  287. /package/{__test__ → __tests__}/sql2dbml/multiple_schema_mysql/stdout.txt +0 -0
  288. /package/{__test__ → __tests__}/sql2dbml/multiple_schema_pg/dbml-error.log +0 -0
  289. /package/{__test__ → __tests__}/sql2dbml/multiple_schema_pg/expect-out-files/multiple_schema.out.dbml +0 -0
  290. /package/{__test__ → __tests__}/sql2dbml/multiple_schema_pg/in-files/multiple_schema.in.sql +0 -0
  291. /package/{__test__ → __tests__}/sql2dbml/multiple_schema_pg/options.json +0 -0
  292. /package/{__test__ → __tests__}/sql2dbml/multiple_schema_pg/out-files/multiple_schema.out.dbml +0 -0
  293. /package/{__test__ → __tests__}/sql2dbml/multiple_schema_pg/stdout.txt +0 -0
  294. /package/{__test__ → __tests__}/sql2dbml/syntax-error/in-files/business.sql +0 -0
  295. /package/{__test__ → __tests__}/sql2dbml/syntax-error/options.json +0 -0
  296. /package/{__test__ → __tests__}/sql2dbml/syntax-error/stdout.txt +0 -0
  297. /package/{__test__ → __tests__}/sql2dbml/syntax-error-duplicate-endpoints --mssql/in-files/schema.sql +0 -0
  298. /package/{__test__ → __tests__}/sql2dbml/syntax-error-duplicate-endpoints --mssql/options.json +0 -0
  299. /package/{__test__ → __tests__}/sql2dbml/syntax-error-duplicate-endpoints --mssql/stdout.txt +0 -0
  300. /package/{__test__ → __tests__}/sql2dbml/syntax-error-duplicate-endpoints --mysql/in-files/schema.sql +0 -0
  301. /package/{__test__ → __tests__}/sql2dbml/syntax-error-duplicate-endpoints --mysql/options.json +0 -0
  302. /package/{__test__ → __tests__}/sql2dbml/syntax-error-duplicate-endpoints --mysql/stdout.txt +0 -0
package/.babelrc CHANGED
@@ -12,8 +12,8 @@
12
12
  "env": {
13
13
  "test": {
14
14
  "plugins": [
15
- "@babel/plugin-transform-runtime",
15
+ "@babel/plugin-transform-runtime"
16
16
  ]
17
17
  }
18
18
  }
19
- }
19
+ }
@@ -23,8 +23,8 @@ describe('@dbml/cli', () => {
23
23
  const expectStdout = fs.readFileSync(path.join(dirName, './stdout.txt'), 'utf-8');
24
24
  const actualStdout = stripAnsi(stdout);
25
25
 
26
- // folder name contains `syntax-error`
27
- if (path.basename(dirName).includes('syntax-error')) {
26
+ // folder name contains `error`
27
+ if (path.basename(dirName).includes('error')) {
28
28
  expect(actualStdout).toContain(expectStdout);
29
29
  } else {
30
30
  expect(actualStdout).toBe(expectStdout);
@@ -41,17 +41,17 @@ describe('@dbml/cli', () => {
41
41
  }
42
42
  };
43
43
 
44
- /* eslint-disable */
44
+ const timeout = 100000;
45
+
45
46
  test.each(scanDirNames(__dirname, 'dbml2sql'))('dbml2sql/%s', async (dirName) => {
46
47
  await runTest(path.join(__dirname, 'dbml2sql', dirName), '../bin/dbml2sql.js');
47
- }, 10000);
48
+ }, timeout);
48
49
 
49
50
  test.each(scanDirNames(__dirname, 'sql2dbml'))('sql2dbml/%s', async (dirName) => {
50
51
  await runTest(path.join(__dirname, 'sql2dbml', dirName), '../bin/sql2dbml.js');
51
- }, 10000);
52
+ }, timeout);
52
53
 
53
54
  test.each(scanDirNames(__dirname, 'db2dbml'))('db2dbml/%s', async (dirName) => {
54
55
  await runTest(path.join(__dirname, 'db2dbml', dirName), '../bin/db2dbml.js');
55
- }, 10000);
56
- /* eslint-enable */
56
+ }, timeout);
57
57
  });
@@ -0,0 +1,11 @@
1
+ 2025-11-17T14:38:14.793Z
2
+ ConnectionError: Failed to connect to localhost:1433 - Could not connect (sequence)
3
+ at /home/huydna/projects/dbml/node_modules/mssql/lib/tedious/connection-pool.js:85:17
4
+ at Connection.onConnect (/home/huydna/projects/dbml/node_modules/tedious/lib/connection.js:849:9)
5
+ at Object.onceWrapper (node:events:633:26)
6
+ at Connection.emit (node:events:518:28)
7
+ at Connection.emit (/home/huydna/projects/dbml/node_modules/tedious/lib/connection.js:970:18)
8
+ at Connection.socketError (/home/huydna/projects/dbml/node_modules/tedious/lib/connection.js:1351:12)
9
+ at /home/huydna/projects/dbml/node_modules/tedious/lib/connection.js:1144:14
10
+ at process.processTicksAndRejections (node:internal/process/task_queues:85:11)
11
+
@@ -1,48 +1,13 @@
1
- Enum "dbo"."chk_status_status" {
2
- "cancelled"
3
- "delivered"
4
- "shipped"
5
- "processing"
6
- "pending"
7
- }
8
-
9
- Enum "dbo"."chk_gender_gender" {
10
- "Other"
11
- "Female"
12
- "Male"
13
- }
14
-
15
- Enum "dbo"."CK_Address_Valid_AddressID_AddressFormatID" {
16
- "176029FA-D6D3-49E1-A48C-000000000002"
17
- "176029FA-D6D3-49E1-A48C-000000000001"
18
- }
19
-
20
- Enum "dbo"."CK_Address_Valid2_A1" {
21
- "333"
22
- "2222"
23
- "1111"
24
- }
25
-
26
- Enum "dbo"."CK_Address_Valid2_A2_A3" {
27
- "2222"
28
- "1111"
29
- }
30
-
31
- Enum "dbo"."CK_Address_Valid2_A4" {
32
- "3333"
33
- "2222"
34
- }
35
-
36
1
  Table "dbo"."users" {
37
2
  "user_id" int(10) [pk, not null, increment]
38
3
  "username" varchar(50) [unique, not null]
39
- "email" varchar(100) [unique, not null]
4
+ "email" varchar(100) [unique, not null, check: `[email] like '%_@_%._%'`]
40
5
  "password_hash" varchar(255) [not null]
41
6
  "first_name" varchar(50)
42
7
  "last_name" varchar(50)
43
8
  "full_name" varchar(100)
44
9
  "full_name_lower" varchar(100)
45
- "date_of_birth" date
10
+ "date_of_birth" date [check: `[date_of_birth]<=dateadd(year,(-13),getdate())`]
46
11
  "created_at" datetime2 [default: `getdate()`]
47
12
  "last_login" datetime2
48
13
  "is_active" bit [default: 1]
@@ -58,8 +23,8 @@ Table "dbo"."products" {
58
23
  "product_id" int(10) [pk, not null, increment]
59
24
  "name" varchar(100) [not null]
60
25
  "description" text
61
- "price" decimal(10,2) [not null]
62
- "stock_quantity" int(10) [not null, default: 0]
26
+ "price" decimal(10,2) [not null, check: `[price]>(0)`]
27
+ "stock_quantity" int(10) [not null, check: `[stock_quantity]>=(0)`, default: 0]
63
28
  "category" varchar(50)
64
29
  "created_at" datetime2 [default: `getdate()`]
65
30
  "updated_at" datetime2 [default: `getdate()`]
@@ -74,8 +39,8 @@ Table "dbo"."orders" {
74
39
  "order_id" int(10) [pk, not null, increment]
75
40
  "user_id" int(10) [not null]
76
41
  "order_date" datetime2 [default: `getdate()`]
77
- "total_amount" decimal(12,2) [not null]
78
- "status" dbo.chk_status_status [default: 'pending']
42
+ "total_amount" decimal(12,2) [not null, check: `[total_amount]>(0)`]
43
+ "status" varchar(20) [check: `[status]='cancelled' OR [status]='delivered' OR [status]='shipped' OR [status]='processing' OR [status]='pending'`, default: 'pending']
79
44
  "shipping_address" text [not null]
80
45
  "billing_address" text [not null]
81
46
 
@@ -88,8 +53,8 @@ Table "dbo"."order_items" {
88
53
  "order_item_id" int(10) [pk, not null, increment]
89
54
  "order_id" int(10) [unique, not null]
90
55
  "product_id" int(10) [unique, not null]
91
- "quantity" int(10) [not null]
92
- "unit_price" decimal(10,2) [not null]
56
+ "quantity" int(10) [not null, check: `[quantity]>(0)`]
57
+ "unit_price" decimal(10,2) [not null, check: `[unit_price]>(0)`]
93
58
 
94
59
  Indexes {
95
60
  (order_id, product_id) [type: nonclustered, name: "idx_order_items_order_product"]
@@ -183,11 +148,15 @@ Table "dbo"."gender_reference" {
183
148
  Table "dbo"."user_define_data_types" {
184
149
  "id" int(10) [pk, not null, increment]
185
150
  "name" nvarchar(50)
186
- "gender" dbo.chk_gender_gender
151
+ "gender" nvarchar(10) [check: `[gender]='Other' OR [gender]='Female' OR [gender]='Male'`]
187
152
  "age_start" int(10)
188
153
  "age_end" int(10)
189
154
  "height" float(53)
190
155
  "weight" float(53)
156
+
157
+ Checks {
158
+ `[age_start]<=[age_end]` [name: 'chk_age_range']
159
+ }
191
160
  }
192
161
 
193
162
  Table "dbo"."table_with_comments" {
@@ -198,6 +167,13 @@ Table "dbo"."table_with_comments" {
198
167
  Note: 'This table stores information about various items.'
199
168
  }
200
169
 
170
+ Table "dbo"."table_with_composite_primary_and_unique_indexes" {
171
+ "col1" int(10) [pk, not null]
172
+ "col2" int(10) [pk, not null]
173
+ "col3" int(10) [unique]
174
+ "col4" int(10) [unique]
175
+ }
176
+
201
177
  Table "dbo"."Authors" {
202
178
  "AuthorID" int(10) [pk, not null]
203
179
  "NationalityID" int(10) [pk, not null]
@@ -214,20 +190,28 @@ Table "dbo"."Books" {
214
190
  }
215
191
 
216
192
  Table "dbo"."AddressInfo" {
217
- "AddressID" dbo.CK_Address_Valid_AddressID_AddressFormatID [not null]
218
- "AddressFormatID" dbo.CK_Address_Valid_AddressID_AddressFormatID [not null]
193
+ "AddressID" uniqueidentifier(16) [not null]
194
+ "AddressFormatID" uniqueidentifier(16) [not null]
195
+
196
+ Checks {
197
+ `([AddressID]='176029FA-D6D3-49E1-A48C-000000000002' OR [AddressID]='176029FA-D6D3-49E1-A48C-000000000001') AND ([AddressFormatID]='176029FA-D6D3-49E1-A48C-000000000002' OR [AddressFormatID]='176029FA-D6D3-49E1-A48C-000000000001')` [name: 'CK_Address_Valid']
198
+ }
219
199
  }
220
200
 
221
201
  Table "dbo"."AddressInfo2" {
222
- "A1" dbo.CK_Address_Valid2_A1 [not null]
223
- "A2" dbo.CK_Address_Valid2_A2_A3 [not null]
224
- "A3" dbo.CK_Address_Valid2_A2_A3 [not null]
225
- "A4" dbo.CK_Address_Valid2_A4 [not null]
202
+ "A1" uniqueidentifier(16) [not null]
203
+ "A2" uniqueidentifier(16) [not null]
204
+ "A3" uniqueidentifier(16) [not null]
205
+ "A4" uniqueidentifier(16) [not null]
206
+
207
+ Checks {
208
+ `([A1]='333' OR [A1]='2222' OR [A1]='1111') AND ([A2]='2222' OR [A2]='1111') AND ([A3]='1111' OR [A3]='2222') AND ([A4]='3333' OR [A4]='2222')` [name: 'CK_Address_Valid2']
209
+ }
226
210
  }
227
211
 
228
212
  Table "dbo"."TestDescriptionTable" {
229
213
  "Id" int(10) [note: 'Primary key identifier.']
230
- "Name" nvarchar(100) [note: 'Name of the entity.']
214
+ "Name" nvarchar(100) [check: `len([Name])>(6)`, note: 'Name of the entity.']
231
215
  Note: 'This is the custom comment name on table.'
232
216
  }
233
217
 
@@ -230,6 +230,17 @@ CREATE TABLE table_with_comments (
230
230
  );
231
231
  GO
232
232
 
233
+ -- Composite primary and unique indexes
234
+ CREATE TABLE table_with_composite_primary_and_unique_indexes (
235
+ col1 INT,
236
+ col2 INT,
237
+ col3 INT,
238
+ col4 INT,
239
+ PRIMARY KEY (col1, col2),
240
+ UNIQUE (col3, col4)
241
+ );
242
+ GO
243
+
233
244
  -- Add comments
234
245
  EXEC sys.sp_addextendedproperty
235
246
  @name=N'MS_Description',
@@ -336,7 +347,7 @@ GO
336
347
 
337
348
  CREATE TABLE TestDescriptionTable (
338
349
  Id INT,
339
- Name NVARCHAR(100)
350
+ Name NVARCHAR(100) CONSTRAINT chk_name_len CHECK (LEN(Name) > 6)
340
351
  );
341
352
 
342
353
  EXEC sp_addextendedproperty
@@ -358,3 +369,4 @@ EXEC sp_addextendedproperty
358
369
  @level0type = N'SCHEMA', @level0name = 'dbo',
359
370
  @level1type = N'TABLE', @level1name = 'TestDescriptionTable',
360
371
  @level2type = N'COLUMN', @level2name = 'Name';
372
+ GO
@@ -0,0 +1,3 @@
1
+ 2025-11-17T14:38:15.588Z
2
+ undefined
3
+
@@ -136,9 +136,13 @@ Table "orders" {
136
136
  Table "products" {
137
137
  "id" "int unsigned" [pk, not null, increment]
138
138
  "price" decimal(10,2) [not null]
139
- "quantity" int [not null]
140
- "total_value" "decimal(10,2) GENERATED ALWAYS AS ((`price` * `quantity`)) STORED"
139
+ "quantity" int [not null, check: ``quantity` < 10000`]
140
+ "total_value" "decimal(10,2) GENERATED ALWAYS AS ((`price` * `quantity`)) STORED" [check: ``total_value` > 0`]
141
141
  "updated_at" "timestamp on update CURRENT_TIMESTAMP" [default: `CURRENT_TIMESTAMP`]
142
+
143
+ Checks {
144
+ `(`price` > 0) and (`price` < 1000000)` [name: 'products_chk_1']
145
+ }
142
146
  }
143
147
 
144
148
  Table "sqrt_triangle" {
@@ -158,6 +162,18 @@ Table "status_example_2" {
158
162
  "s8" status_example_2_s8_enum [default: '0']
159
163
  }
160
164
 
165
+ Table "table_with_composite_primary_and_unique_indexes" {
166
+ "col1" int [not null]
167
+ "col2" int [not null]
168
+ "col3" int
169
+ "col4" int
170
+
171
+ Indexes {
172
+ (col3, col4) [unique, name: "col3"]
173
+ (col1, col2) [pk, name: "PRIMARY"]
174
+ }
175
+ }
176
+
161
177
  Table "users" {
162
178
  "user_id" "int unsigned" [pk, not null, increment]
163
179
  "username" varchar(50) [unique, not null]
@@ -169,6 +185,10 @@ Table "users" {
169
185
  "created_at" timestamp [default: `CURRENT_TIMESTAMP`]
170
186
  "last_login" timestamp [default: `CURRENT_TIMESTAMP`]
171
187
  "is_active" tinyint(1) [default: 1]
188
+
189
+ Checks {
190
+ ``created_at` <= `last_login`` [name: 'chk_last_login']
191
+ }
172
192
  }
173
193
 
174
194
  Ref "fk_test_composite":"composite_key_2".("id2_1", "id2_2") < "composite_key_1".("id1_1", "id1_2")
@@ -9,15 +9,21 @@ create table users (
9
9
  date_of_birth date,
10
10
  created_at timestamp default current_timestamp,
11
11
  last_login timestamp default now(),
12
- is_active tinyint(1) default 1
12
+ is_active tinyint(1) default 1,
13
+
14
+ constraint chk_last_login
15
+ check (created_at <= last_login)
13
16
  );
14
17
 
15
18
  create table products (
16
19
  id int unsigned primary key auto_increment,
17
- price decimal(10,2) not null,
20
+ price decimal(10,2) not null check (price > 0 AND price < 1000000),
18
21
  quantity int not null,
19
22
  total_value decimal(10,2) generated always as ((price * quantity)) stored,
20
- updated_at timestamp default current_timestamp on update current_timestamp
23
+ updated_at timestamp default current_timestamp on update current_timestamp,
24
+
25
+ constraint max_quantity check (quantity < 10000),
26
+ check (total_value > 0)
21
27
  );
22
28
 
23
29
  create table orders (
@@ -139,3 +145,12 @@ create table date_time_example (
139
145
  on_update_1 datetime default now() on update now(),
140
146
  on_update_2 datetime default now() on update localtime()
141
147
  );
148
+
149
+ create table table_with_composite_primary_and_unique_indexes (
150
+ col1 int,
151
+ col2 int,
152
+ col3 int,
153
+ col4 int,
154
+ primary key (col1, col2),
155
+ unique (col3, col4)
156
+ );
@@ -0,0 +1,7 @@
1
+ 2025-11-17T14:38:16.383Z
2
+ Error: PostgreSQL connection error: AggregateError
3
+ at getValidatedClient (/home/huydna/projects/dbml/packages/dbml-connector/dist/connectors/postgresConnector.js:21:19)
4
+ at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
5
+ at async fetchSchemaJson (/home/huydna/projects/dbml/packages/dbml-connector/dist/connectors/postgresConnector.js:482:20)
6
+ at async connectionHandler (/home/huydna/projects/dbml/packages/dbml-cli/lib/cli/connector.js:24:24)
7
+
@@ -37,12 +37,12 @@ Enum "gender_type" {
37
37
  Table "users" {
38
38
  "user_id" int4 [pk, not null, increment]
39
39
  "username" varchar(50) [unique, not null]
40
- "email" varchar(100) [unique, not null]
40
+ "email" varchar(100) [unique, not null, check: `(email)::text ~* '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}$'::text`]
41
41
  "password_hash" varchar(255) [not null]
42
42
  "first_name" varchar(50)
43
43
  "last_name" varchar(50)
44
44
  "full_name" varchar(100)
45
- "date_of_birth" date
45
+ "date_of_birth" date [check: `date_of_birth <= (CURRENT_DATE - '13 years'::interval)`]
46
46
  "created_at" timestamptz [default: `CURRENT_TIMESTAMP`]
47
47
  "last_login" timestamptz
48
48
  "is_active" bool [default: true]
@@ -58,13 +58,17 @@ Table "products" {
58
58
  "product_id" int4 [pk, not null, increment]
59
59
  "name" varchar(100) [not null]
60
60
  "description" text
61
- "price" numeric(10,2) [not null]
62
- "stock_quantity" int4 [not null, default: 0]
61
+ "price" numeric(10,2) [not null, check: `price > (0)::numeric`]
62
+ "stock_quantity" int4 [not null, check: `stock_quantity >= 0`, default: 0]
63
63
  "category" varchar(50)
64
64
  "created_at" timestamptz [default: `CURRENT_TIMESTAMP`]
65
65
  "updated_at" timestamptz [default: `CURRENT_TIMESTAMP`]
66
66
  "is_available" bool [default: true]
67
67
 
68
+ Checks {
69
+ `created_at <= updated_at` [name: 'chk_created_at']
70
+ }
71
+
68
72
  Indexes {
69
73
  category [type: btree, name: "idx_products_category"]
70
74
  }
@@ -74,8 +78,8 @@ Table "orders" {
74
78
  "order_id" int4 [pk, not null, increment]
75
79
  "user_id" int4 [not null]
76
80
  "order_date" timestamptz [default: `CURRENT_TIMESTAMP`]
77
- "total_amount" numeric(12,2) [not null]
78
- "status" varchar(20) [default: 'pending']
81
+ "total_amount" numeric(12,2) [not null, check: `total_amount > (0)::numeric`]
82
+ "status" varchar(20) [check: `(status)::text = ANY ((ARRAY['pending'::character varying, 'processing'::character varying, 'shipped'::character varying, 'delivered'::character varying, 'cancelled'::character varying])::text[])`, default: 'pending']
79
83
  "shipping_address" text [not null]
80
84
  "billing_address" text [not null]
81
85
 
@@ -88,11 +92,11 @@ Table "order_items" {
88
92
  "order_item_id" int4 [pk, not null, increment]
89
93
  "order_id" int4 [not null]
90
94
  "product_id" int4 [not null]
91
- "quantity" int4 [not null]
92
- "unit_price" numeric(10,2) [not null]
95
+ "quantity" int4 [not null, check: `quantity > 0`]
96
+ "unit_price" numeric(10,2) [not null, check: `unit_price > (0)::numeric`]
93
97
 
94
98
  Indexes {
95
- (order_id, product_id) [type: btree, name: "uq_order_product"]
99
+ (order_id, product_id) [type: btree, unique, name: "uq_order_product"]
96
100
  (order_id, product_id) [type: btree, name: "idx_order_items_order_product"]
97
101
  }
98
102
  }
@@ -130,8 +134,8 @@ Table "user_define_data_types" {
130
134
  "name" varchar(50)
131
135
  "gender" gender_type
132
136
  "age" int4range
133
- "height" float8
134
- "weight" float8
137
+ "height" float8 [check: `height > (0)::double precision`]
138
+ "weight" float8 [check: `weight > (0)::double precision`]
135
139
  }
136
140
 
137
141
  Table "table_with_comments" {
@@ -149,7 +153,7 @@ Table "authors" {
149
153
  "birthyear" int4
150
154
 
151
155
  Indexes {
152
- (authorid, nationalityid) [type: btree, name: "authors_pkey"]
156
+ (authorid, nationalityid) [pk, type: btree, name: "authors_pkey"]
153
157
  }
154
158
  }
155
159
 
@@ -171,6 +175,18 @@ Table "table2" {
171
175
  "status" enum_type2
172
176
  }
173
177
 
178
+ Table "table_with_composite_primary_and_unique_indexes" {
179
+ "col1" int4 [not null]
180
+ "col2" int4 [not null]
181
+ "col3" int4
182
+ "col4" int4
183
+
184
+ Indexes {
185
+ (col1, col2) [pk, type: btree, name: "table_with_composite_primary_and_unique_indexes_pkey"]
186
+ (col3, col4) [type: btree, unique, name: "table_with_composite_primary_and_unique_indexes_col3_col4_key"]
187
+ }
188
+ }
189
+
174
190
  Ref "fk_authornationality":"authors".("authorid", "nationalityid") < "books".("authorid", "nationalityid") [delete: cascade]
175
191
 
176
192
  Ref "fk_order":"orders"."order_id" < "order_items"."order_id" [delete: cascade]
@@ -38,7 +38,8 @@ CREATE TABLE products (
38
38
  updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
39
39
  is_available BOOLEAN DEFAULT TRUE,
40
40
  CONSTRAINT chk_price_positive CHECK (price > 0),
41
- CONSTRAINT chk_stock_non_negative CHECK (stock_quantity >= 0)
41
+ CONSTRAINT chk_stock_non_negative CHECK (stock_quantity >= 0),
42
+ CONSTRAINT chk_created_at CHECK (created_at <= updated_at)
42
43
  );
43
44
 
44
45
  -- Create an index on the category column for faster filtering
@@ -117,8 +118,8 @@ CREATE TABLE user_define_data_types (
117
118
  name VARCHAR(50),
118
119
  gender gender_type,
119
120
  age int4range, -- Using built-in int4range for age range
120
- height FLOAT,
121
- weight FLOAT
121
+ height FLOAT CHECK (height > 0),
122
+ weight FLOAT CONSTRAINT chk_positive_weight CHECK (weight > 0)
122
123
  );
123
124
 
124
125
  -- Create table with comments
@@ -185,3 +186,13 @@ CREATE TABLE dbml_test.table3 (
185
186
  id SERIAL PRIMARY KEY,
186
187
  status dbml_test.enum_type3
187
188
  );
189
+
190
+ -- Composite primary and unique indexes
191
+ CREATE TABLE table_with_composite_primary_and_unique_indexes (
192
+ col1 INT,
193
+ col2 INT,
194
+ col3 INT,
195
+ col4 INT,
196
+ PRIMARY KEY (col1, col2),
197
+ UNIQUE (col3, col4)
198
+ );
@@ -1,4 +1,3 @@
1
- // eslint-disable-next-line
2
1
  require = require('esm')(module);
3
2
  const { db2dbml } = require('../src');
4
3
 
@@ -1,6 +1,6 @@
1
1
  -- SQL dump generated using DBML (dbml.dbdiagram.io)
2
2
  -- Database: MySQL
3
- -- Generated at: 2025-10-28T05:18:29.035Z
3
+ -- Generated at: 2025-11-17T14:37:29.432Z
4
4
 
5
5
  CREATE TABLE `orders` (
6
6
  `id` int PRIMARY KEY AUTO_INCREMENT,
@@ -1,6 +1,6 @@
1
1
  -- SQL dump generated using DBML (dbml.dbdiagram.io)
2
2
  -- Database: Oracle
3
- -- Generated at: 2025-10-28T05:18:30.595Z
3
+ -- Generated at: 2025-11-17T14:37:31.068Z
4
4
 
5
5
  CREATE TABLE "orders" (
6
6
  "id" int GENERATED AS IDENTITY PRIMARY KEY,
@@ -1,6 +1,6 @@
1
1
  -- SQL dump generated using DBML (dbml.dbdiagram.io)
2
2
  -- Database: PostgreSQL
3
- -- Generated at: 2025-10-28T05:18:32.896Z
3
+ -- Generated at: 2025-11-17T14:37:32.743Z
4
4
 
5
5
  CREATE TYPE "orders_status" AS ENUM (
6
6
  'created',
@@ -1,6 +1,6 @@
1
1
  -- SQL dump generated using DBML (dbml.dbdiagram.io)
2
2
  -- Database: PostgreSQL
3
- -- Generated at: 2025-10-28T05:18:32.123Z
3
+ -- Generated at: 2025-11-17T14:37:33.593Z
4
4
 
5
5
  CREATE TYPE "orders_status" AS ENUM (
6
6
  'created',
@@ -1,6 +1,6 @@
1
1
  -- SQL dump generated using DBML (dbml.dbdiagram.io)
2
2
  -- Database: MySQL
3
- -- Generated at: 2025-10-28T05:18:35.252Z
3
+ -- Generated at: 2025-11-17T14:37:36.085Z
4
4
 
5
5
  CREATE TABLE `staff` (
6
6
  `id` int PRIMARY KEY,
@@ -1,6 +1,6 @@
1
1
  -- SQL dump generated using DBML (dbml.dbdiagram.io)
2
2
  -- Database: Oracle
3
- -- Generated at: 2025-10-28T05:18:36.826Z
3
+ -- Generated at: 2025-11-17T14:37:37.805Z
4
4
 
5
5
  CREATE TABLE "staff" (
6
6
  "id" int PRIMARY KEY,
@@ -1,6 +1,6 @@
1
1
  -- SQL dump generated using DBML (dbml.dbdiagram.io)
2
2
  -- Database: PostgreSQL
3
- -- Generated at: 2025-10-28T05:18:39.134Z
3
+ -- Generated at: 2025-11-17T14:37:39.489Z
4
4
 
5
5
  CREATE TABLE "staff" (
6
6
  "id" int PRIMARY KEY,
@@ -1,6 +1,6 @@
1
1
  -- SQL dump generated using DBML (dbml.dbdiagram.io)
2
2
  -- Database: PostgreSQL
3
- -- Generated at: 2025-10-28T05:18:38.323Z
3
+ -- Generated at: 2025-11-17T14:37:40.334Z
4
4
 
5
5
  CREATE TABLE "staff" (
6
6
  "id" int PRIMARY KEY,
@@ -1,6 +1,6 @@
1
1
  -- SQL dump generated using DBML (dbml.dbdiagram.io)
2
2
  -- Database: SQL Server
3
- -- Generated at: 2025-10-28T05:18:41.447Z
3
+ -- Generated at: 2025-11-17T14:37:42.778Z
4
4
 
5
5
  CREATE SCHEMA [schemaB]
6
6
  GO
@@ -1,6 +1,6 @@
1
1
  -- SQL dump generated using DBML (dbml.dbdiagram.io)
2
2
  -- Database: MySQL
3
- -- Generated at: 2025-10-28T05:18:42.188Z
3
+ -- Generated at: 2025-11-17T14:37:43.600Z
4
4
 
5
5
  CREATE SCHEMA `schemaB`;
6
6
 
@@ -1,6 +1,6 @@
1
1
  -- SQL dump generated using DBML (dbml.dbdiagram.io)
2
2
  -- Database: Oracle
3
- -- Generated at: 2025-10-28T05:18:42.904Z
3
+ -- Generated at: 2025-11-17T14:37:44.428Z
4
4
 
5
5
  CREATE USER "C##test01"
6
6
  NO AUTHENTICATION
@@ -1,6 +1,6 @@
1
1
  -- SQL dump generated using DBML (dbml.dbdiagram.io)
2
2
  -- Database: PostgreSQL
3
- -- Generated at: 2025-10-28T05:18:43.626Z
3
+ -- Generated at: 2025-11-17T14:37:45.207Z
4
4
 
5
5
  CREATE SCHEMA "schemaB";
6
6
 
@@ -0,0 +1,9 @@
1
+ 2025-11-17T09:11:54.568Z
2
+ undefined
3
+
4
+ 2025-11-17T09:51:53.546Z
5
+ undefined
6
+
7
+ 2025-11-17T14:37:45.981Z
8
+ undefined
9
+
@@ -1,4 +1,3 @@
1
- // eslint-disable-next-line
2
1
  require = require('esm')(module);
3
2
  const { dbml2sql } = require('../src');
4
3
 
@@ -0,0 +1,6 @@
1
+ CREATE TABLE Users (
2
+ id TEXT PRIMARY KEY
3
+ );
4
+
5
+ ALTER TABLE Users
6
+ ADD CONSTRAINT unq UNIQUE (name);
@@ -0,0 +1,8 @@
1
+ {
2
+ "args": [
3
+ "./in-files/schema.sql",
4
+ "--oracle",
5
+ "-o",
6
+ "./out-files/schema.dbml"
7
+ ]
8
+ }
@@ -0,0 +1,4 @@
1
+ ERROR:
2
+ You have a syntax error at "schema.sql" line 1 column 1. Column "name" do not exist in table "Users"
3
+
4
+ A complete log can be found in:
@@ -0,0 +1,2 @@
1
+ ALTER TABLE Users
2
+ ADD CONSTRAINT unq UNIQUE (id);
@@ -0,0 +1,8 @@
1
+ {
2
+ "args": [
3
+ "./in-files/schema.sql",
4
+ "--oracle",
5
+ "-o",
6
+ "./out-files/schema.dbml"
7
+ ]
8
+ }
@@ -0,0 +1,4 @@
1
+ ERROR:
2
+ You have a syntax error at "schema.sql" line 1 column 13. Table "Users" not found
3
+
4
+ A complete log can be found in:
@@ -0,0 +1,6 @@
1
+ CREATE TABLE Users (
2
+ id TEXT
3
+ );
4
+
5
+ COMMENT ON COLUMN Users.name IS 'fullname';
6
+