@dbml/cli 5.1.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 (294) hide show
  1. package/.babelrc +2 -2
  2. package/{__test__ → __tests__}/cli.test.js +3 -4
  3. package/__tests__/db2dbml/mssql/dbml-error.log +11 -0
  4. package/__tests__/db2dbml/mssql/expect-out-files/schema.dbml +226 -0
  5. package/{__test__ → __tests__}/db2dbml/mssql/schema.sql +11 -0
  6. package/__tests__/db2dbml/mysql/dbml-error.log +3 -0
  7. package/__tests__/db2dbml/mysql/expect-out-files/schema.dbml +200 -0
  8. package/{__test__ → __tests__}/db2dbml/mysql/schema.sql +9 -0
  9. package/__tests__/db2dbml/postgres/dbml-error.log +7 -0
  10. package/__tests__/db2dbml/postgres/expect-out-files/schema.dbml +196 -0
  11. package/{__test__ → __tests__}/db2dbml/postgres/schema.sql +10 -0
  12. package/{__test__ → __tests__}/db2dbml_bin.js +0 -1
  13. package/__tests__/dbml2sql/filename --mysql --out-file/dbml-error.log +0 -0
  14. package/__tests__/dbml2sql/filename --mysql --out-file/out-files/schema.sql +65 -0
  15. package/__tests__/dbml2sql/filename --mysql stdout/dbml-error.log +0 -0
  16. package/__tests__/dbml2sql/filename --oracle --out-file/dbml-error.log +0 -0
  17. package/__tests__/dbml2sql/filename --oracle --out-file/out-files/schema.sql +61 -0
  18. package/__tests__/dbml2sql/filename --oracle stdout/dbml-error.log +0 -0
  19. package/__tests__/dbml2sql/filename --out-file/dbml-error.log +0 -0
  20. package/__tests__/dbml2sql/filename --out-file/out-files/schema.sql +77 -0
  21. package/__tests__/dbml2sql/filename --postgres --out-file/dbml-error.log +0 -0
  22. package/__tests__/dbml2sql/filename --postgres --out-file/out-files/schema.sql +77 -0
  23. package/__tests__/dbml2sql/filename --postgres stdout/dbml-error.log +0 -0
  24. package/__tests__/dbml2sql/filename stdout/dbml-error.log +0 -0
  25. package/__tests__/dbml2sql/filenames --mysql --out-file/dbml-error.log +0 -0
  26. package/__tests__/dbml2sql/filenames --mysql --out-file/out-files/schema.sql +172 -0
  27. package/__tests__/dbml2sql/filenames --mysql stdout/dbml-error.log +0 -0
  28. package/__tests__/dbml2sql/filenames --oracle --out-file/dbml-error.log +0 -0
  29. package/__tests__/dbml2sql/filenames --oracle --out-file/out-files/schema.sql +172 -0
  30. package/__tests__/dbml2sql/filenames --oracle stdout/dbml-error.log +0 -0
  31. package/__tests__/dbml2sql/filenames --out-file/dbml-error.log +0 -0
  32. package/__tests__/dbml2sql/filenames --out-file/out-files/schema.sql +172 -0
  33. package/__tests__/dbml2sql/filenames --postgres --out-file/dbml-error.log +0 -0
  34. package/__tests__/dbml2sql/filenames --postgres --out-file/out-files/schema.sql +172 -0
  35. package/__tests__/dbml2sql/filenames --postgres stdout/dbml-error.log +0 -0
  36. package/__tests__/dbml2sql/filenames stdout/dbml-error.log +0 -0
  37. package/__tests__/dbml2sql/multiple_schema_mssql/dbml-error.log +0 -0
  38. package/__tests__/dbml2sql/multiple_schema_mssql/out-files/multiple_schema.out.sql +62 -0
  39. package/__tests__/dbml2sql/multiple_schema_mysql/dbml-error.log +0 -0
  40. package/__tests__/dbml2sql/multiple_schema_mysql/out-files/multiple_schema.out.sql +50 -0
  41. package/__tests__/dbml2sql/multiple_schema_oracle/dbml-error.log +0 -0
  42. package/__tests__/dbml2sql/multiple_schema_oracle/out-files/multiple_schema.out.sql +88 -0
  43. package/__tests__/dbml2sql/multiple_schema_pg/dbml-error.log +0 -0
  44. package/__tests__/dbml2sql/multiple_schema_pg/out-files/multiple_schema.out.sql +67 -0
  45. package/__tests__/dbml2sql/syntax-error/dbml-error.log +9 -0
  46. package/{__test__ → __tests__}/dbml2sql_bin.js +0 -1
  47. package/__tests__/sql2dbml/custom-error-alter-table-column-not-found --oracle/in-files/schema.sql +6 -0
  48. package/__tests__/sql2dbml/custom-error-alter-table-column-not-found --oracle/options.json +8 -0
  49. package/__tests__/sql2dbml/custom-error-alter-table-column-not-found --oracle/stdout.txt +4 -0
  50. package/__tests__/sql2dbml/custom-error-alter-table-table-not-found --oracle/in-files/schema.sql +2 -0
  51. package/__tests__/sql2dbml/custom-error-alter-table-table-not-found --oracle/options.json +8 -0
  52. package/__tests__/sql2dbml/custom-error-alter-table-table-not-found --oracle/stdout.txt +4 -0
  53. package/__tests__/sql2dbml/custom-error-column-comment-column-not-found --oracle/in-files/schema.sql +6 -0
  54. package/__tests__/sql2dbml/custom-error-column-comment-column-not-found --oracle/options.json +8 -0
  55. package/__tests__/sql2dbml/custom-error-column-comment-column-not-found --oracle/stdout.txt +4 -0
  56. package/__tests__/sql2dbml/custom-error-column-comment-table-not-found --oracle/in-files/schema.sql +5 -0
  57. package/__tests__/sql2dbml/custom-error-column-comment-table-not-found --oracle/options.json +8 -0
  58. package/__tests__/sql2dbml/custom-error-column-comment-table-not-found --oracle/stdout.txt +4 -0
  59. package/__tests__/sql2dbml/custom-error-create-index-table-not-found --oracle/in-files/schema.sql +1 -0
  60. package/__tests__/sql2dbml/custom-error-create-index-table-not-found --oracle/options.json +8 -0
  61. package/__tests__/sql2dbml/custom-error-create-index-table-not-found --oracle/stdout.txt +4 -0
  62. package/__tests__/sql2dbml/custom-error-table-comment-table-not-found --oracle/in-files/schema.sql +5 -0
  63. package/__tests__/sql2dbml/custom-error-table-comment-table-not-found --oracle/options.json +8 -0
  64. package/__tests__/sql2dbml/custom-error-table-comment-table-not-found --oracle/stdout.txt +4 -0
  65. package/__tests__/sql2dbml/filename --mssql --out-file/dbml-error.log +0 -0
  66. package/__tests__/sql2dbml/filename --mssql --out-file/out-files/schema.dbml +25 -0
  67. package/__tests__/sql2dbml/filename --mysql --out-file/dbml-error.log +0 -0
  68. package/__tests__/sql2dbml/filename --mysql --out-file/out-files/schema.dbml +74 -0
  69. package/__tests__/sql2dbml/filename --mysql stdout/dbml-error.log +0 -0
  70. package/__tests__/sql2dbml/filename --oracle --out-file/expect-out-files/schema.dbml +83 -0
  71. package/__tests__/sql2dbml/filename --oracle --out-file/in-files/schema.sql +147 -0
  72. package/__tests__/sql2dbml/filename --oracle --out-file/options.json +8 -0
  73. package/__tests__/sql2dbml/filename --oracle --out-file/stdout.txt +1 -0
  74. package/__tests__/sql2dbml/filename --out-file/dbml-error.log +0 -0
  75. package/__tests__/sql2dbml/filename --postgres --out-file/dbml-error.log +0 -0
  76. package/__tests__/sql2dbml/filename --postgres --out-file/expect-out-files/schema.dbml +74 -0
  77. package/__tests__/sql2dbml/filename --postgres --out-file/out-files/schema.dbml +74 -0
  78. package/__tests__/sql2dbml/filename --postgres stdout/dbml-error.log +0 -0
  79. package/__tests__/sql2dbml/filename --snowflake stdout/dbml-error.log +0 -0
  80. package/__tests__/sql2dbml/filename stdout/dbml-error.log +0 -0
  81. package/__tests__/sql2dbml/filenames --mysql --out-file/dbml-error.log +0 -0
  82. package/__tests__/sql2dbml/filenames --mysql --out-file/out-files/schema.dbml +170 -0
  83. package/__tests__/sql2dbml/filenames --mysql stdout/dbml-error.log +0 -0
  84. package/__tests__/sql2dbml/filenames --out-file/dbml-error.log +0 -0
  85. package/__tests__/sql2dbml/filenames --postgres --out-file/dbml-error.log +0 -0
  86. package/__tests__/sql2dbml/filenames --postgres --out-file/expect-out-files/schema.dbml +170 -0
  87. package/__tests__/sql2dbml/filenames --postgres --out-file/out-files/schema.dbml +170 -0
  88. package/__tests__/sql2dbml/filenames --postgres stdout/dbml-error.log +0 -0
  89. package/__tests__/sql2dbml/filenames stdout/dbml-error.log +0 -0
  90. package/__tests__/sql2dbml/multiple_schema_mssql/dbml-error.log +0 -0
  91. package/__tests__/sql2dbml/multiple_schema_mssql/out-files/multiple_schema.out.dbml +58 -0
  92. package/__tests__/sql2dbml/multiple_schema_mysql/dbml-error.log +0 -0
  93. package/__tests__/sql2dbml/multiple_schema_mysql/out-files/multiple_schema.out.dbml +136 -0
  94. package/__tests__/sql2dbml/multiple_schema_pg/dbml-error.log +0 -0
  95. package/__tests__/sql2dbml/multiple_schema_pg/out-files/multiple_schema.out.dbml +101 -0
  96. package/__tests__/sql2dbml/syntax-error/dbml-error.log +9 -0
  97. package/__tests__/sql2dbml/syntax-error-duplicate-endpoints --mssql/dbml-error.log +9 -0
  98. package/__tests__/sql2dbml/syntax-error-duplicate-endpoints --mysql/dbml-error.log +9 -0
  99. package/{__test__ → __tests__}/sql2dbml_bin.js +0 -1
  100. package/bin/db2dbml.js +0 -1
  101. package/bin/dbml2sql.js +0 -1
  102. package/bin/sql2dbml.js +0 -1
  103. package/eslint.config.ts +96 -0
  104. package/jest.config.ts +13 -0
  105. package/lib/cli/index.js +1 -3
  106. package/lib/cli/utils.js +8 -6
  107. package/lib/helpers/logger.js +0 -2
  108. package/package.json +17 -14
  109. package/src/cli/index.js +1 -1
  110. package/src/cli/utils.js +5 -1
  111. package/src/helpers/logger.js +0 -1
  112. package/tsconfig.json +13 -5
  113. /package/{__test__ → __tests__}/db2dbml/mssql/options.json +0 -0
  114. /package/{__test__/db2dbml/mssql/expect-out-files → __tests__/db2dbml/mssql/out-files}/schema.dbml +0 -0
  115. /package/{__test__ → __tests__}/db2dbml/mssql/stdout.txt +0 -0
  116. /package/{__test__ → __tests__}/db2dbml/mysql/options.json +0 -0
  117. /package/{__test__/db2dbml/mysql/expect-out-files → __tests__/db2dbml/mysql/out-files}/schema.dbml +0 -0
  118. /package/{__test__ → __tests__}/db2dbml/mysql/stdout.txt +0 -0
  119. /package/{__test__ → __tests__}/db2dbml/postgres/options.json +0 -0
  120. /package/{__test__/db2dbml/postgres/expect-out-files → __tests__/db2dbml/postgres/out-files}/schema.dbml +0 -0
  121. /package/{__test__ → __tests__}/db2dbml/postgres/stdout.txt +0 -0
  122. /package/{__test__ → __tests__}/dbml2sql/filename --mysql --out-file/expect-out-files/schema.sql +0 -0
  123. /package/{__test__ → __tests__}/dbml2sql/filename --mysql --out-file/in-files/schema.dbml +0 -0
  124. /package/{__test__ → __tests__}/dbml2sql/filename --mysql --out-file/options.json +0 -0
  125. /package/{__test__ → __tests__}/dbml2sql/filename --mysql --out-file/stdout.txt +0 -0
  126. /package/{__test__ → __tests__}/dbml2sql/filename --mysql stdout/in-files/schema.dbml +0 -0
  127. /package/{__test__ → __tests__}/dbml2sql/filename --mysql stdout/options.json +0 -0
  128. /package/{__test__ → __tests__}/dbml2sql/filename --mysql stdout/stdout.txt +0 -0
  129. /package/{__test__ → __tests__}/dbml2sql/filename --oracle --out-file/expect-out-files/schema.sql +0 -0
  130. /package/{__test__ → __tests__}/dbml2sql/filename --oracle --out-file/in-files/schema.dbml +0 -0
  131. /package/{__test__ → __tests__}/dbml2sql/filename --oracle --out-file/options.json +0 -0
  132. /package/{__test__ → __tests__}/dbml2sql/filename --oracle --out-file/stdout.txt +0 -0
  133. /package/{__test__ → __tests__}/dbml2sql/filename --oracle stdout/in-files/schema.dbml +0 -0
  134. /package/{__test__ → __tests__}/dbml2sql/filename --oracle stdout/options.json +0 -0
  135. /package/{__test__ → __tests__}/dbml2sql/filename --oracle stdout/stdout.txt +0 -0
  136. /package/{__test__ → __tests__}/dbml2sql/filename --out-file/expect-out-files/schema.sql +0 -0
  137. /package/{__test__ → __tests__}/dbml2sql/filename --out-file/in-files/schema.dbml +0 -0
  138. /package/{__test__ → __tests__}/dbml2sql/filename --out-file/options.json +0 -0
  139. /package/{__test__ → __tests__}/dbml2sql/filename --out-file/stdout.txt +0 -0
  140. /package/{__test__ → __tests__}/dbml2sql/filename --postgres --out-file/expect-out-files/schema.sql +0 -0
  141. /package/{__test__ → __tests__}/dbml2sql/filename --postgres --out-file/in-files/schema.dbml +0 -0
  142. /package/{__test__ → __tests__}/dbml2sql/filename --postgres --out-file/options.json +0 -0
  143. /package/{__test__ → __tests__}/dbml2sql/filename --postgres --out-file/stdout.txt +0 -0
  144. /package/{__test__ → __tests__}/dbml2sql/filename --postgres stdout/in-files/schema.dbml +0 -0
  145. /package/{__test__ → __tests__}/dbml2sql/filename --postgres stdout/options.json +0 -0
  146. /package/{__test__ → __tests__}/dbml2sql/filename --postgres stdout/stdout.txt +0 -0
  147. /package/{__test__ → __tests__}/dbml2sql/filename stdout/in-files/schema.dbml +0 -0
  148. /package/{__test__ → __tests__}/dbml2sql/filename stdout/options.json +0 -0
  149. /package/{__test__ → __tests__}/dbml2sql/filename stdout/stdout.txt +0 -0
  150. /package/{__test__ → __tests__}/dbml2sql/filenames --mysql --out-file/expect-out-files/schema.sql +0 -0
  151. /package/{__test__ → __tests__}/dbml2sql/filenames --mysql --out-file/in-files/business.dbml +0 -0
  152. /package/{__test__ → __tests__}/dbml2sql/filenames --mysql --out-file/in-files/customer.dbml +0 -0
  153. /package/{__test__ → __tests__}/dbml2sql/filenames --mysql --out-file/in-files/inventory.dbml +0 -0
  154. /package/{__test__ → __tests__}/dbml2sql/filenames --mysql --out-file/options.json +0 -0
  155. /package/{__test__ → __tests__}/dbml2sql/filenames --mysql --out-file/stdout.txt +0 -0
  156. /package/{__test__ → __tests__}/dbml2sql/filenames --mysql stdout/in-files/business.dbml +0 -0
  157. /package/{__test__ → __tests__}/dbml2sql/filenames --mysql stdout/in-files/customer.dbml +0 -0
  158. /package/{__test__ → __tests__}/dbml2sql/filenames --mysql stdout/in-files/inventory.dbml +0 -0
  159. /package/{__test__ → __tests__}/dbml2sql/filenames --mysql stdout/options.json +0 -0
  160. /package/{__test__ → __tests__}/dbml2sql/filenames --mysql stdout/stdout.txt +0 -0
  161. /package/{__test__ → __tests__}/dbml2sql/filenames --oracle --out-file/expect-out-files/schema.sql +0 -0
  162. /package/{__test__ → __tests__}/dbml2sql/filenames --oracle --out-file/in-files/business.dbml +0 -0
  163. /package/{__test__ → __tests__}/dbml2sql/filenames --oracle --out-file/in-files/customer.dbml +0 -0
  164. /package/{__test__ → __tests__}/dbml2sql/filenames --oracle --out-file/in-files/inventory.dbml +0 -0
  165. /package/{__test__ → __tests__}/dbml2sql/filenames --oracle --out-file/options.json +0 -0
  166. /package/{__test__ → __tests__}/dbml2sql/filenames --oracle --out-file/stdout.txt +0 -0
  167. /package/{__test__ → __tests__}/dbml2sql/filenames --oracle stdout/in-files/business.dbml +0 -0
  168. /package/{__test__ → __tests__}/dbml2sql/filenames --oracle stdout/in-files/customer.dbml +0 -0
  169. /package/{__test__ → __tests__}/dbml2sql/filenames --oracle stdout/in-files/inventory.dbml +0 -0
  170. /package/{__test__ → __tests__}/dbml2sql/filenames --oracle stdout/options.json +0 -0
  171. /package/{__test__ → __tests__}/dbml2sql/filenames --oracle stdout/stdout.txt +0 -0
  172. /package/{__test__ → __tests__}/dbml2sql/filenames --out-file/expect-out-files/schema.sql +0 -0
  173. /package/{__test__ → __tests__}/dbml2sql/filenames --out-file/in-files/business.dbml +0 -0
  174. /package/{__test__ → __tests__}/dbml2sql/filenames --out-file/in-files/customer.dbml +0 -0
  175. /package/{__test__ → __tests__}/dbml2sql/filenames --out-file/in-files/inventory.dbml +0 -0
  176. /package/{__test__ → __tests__}/dbml2sql/filenames --out-file/options.json +0 -0
  177. /package/{__test__ → __tests__}/dbml2sql/filenames --out-file/stdout.txt +0 -0
  178. /package/{__test__ → __tests__}/dbml2sql/filenames --postgres --out-file/expect-out-files/schema.sql +0 -0
  179. /package/{__test__ → __tests__}/dbml2sql/filenames --postgres --out-file/in-files/business.dbml +0 -0
  180. /package/{__test__ → __tests__}/dbml2sql/filenames --postgres --out-file/in-files/customer.dbml +0 -0
  181. /package/{__test__ → __tests__}/dbml2sql/filenames --postgres --out-file/in-files/inventory.dbml +0 -0
  182. /package/{__test__ → __tests__}/dbml2sql/filenames --postgres --out-file/options.json +0 -0
  183. /package/{__test__ → __tests__}/dbml2sql/filenames --postgres --out-file/stdout.txt +0 -0
  184. /package/{__test__ → __tests__}/dbml2sql/filenames --postgres stdout/in-files/business.dbml +0 -0
  185. /package/{__test__ → __tests__}/dbml2sql/filenames --postgres stdout/in-files/customer.dbml +0 -0
  186. /package/{__test__ → __tests__}/dbml2sql/filenames --postgres stdout/in-files/inventory.dbml +0 -0
  187. /package/{__test__ → __tests__}/dbml2sql/filenames --postgres stdout/options.json +0 -0
  188. /package/{__test__ → __tests__}/dbml2sql/filenames --postgres stdout/stdout.txt +0 -0
  189. /package/{__test__ → __tests__}/dbml2sql/filenames stdout/in-files/business.dbml +0 -0
  190. /package/{__test__ → __tests__}/dbml2sql/filenames stdout/in-files/customer.dbml +0 -0
  191. /package/{__test__ → __tests__}/dbml2sql/filenames stdout/in-files/inventory.dbml +0 -0
  192. /package/{__test__ → __tests__}/dbml2sql/filenames stdout/options.json +0 -0
  193. /package/{__test__ → __tests__}/dbml2sql/filenames stdout/stdout.txt +0 -0
  194. /package/{__test__ → __tests__}/dbml2sql/multiple_schema_mssql/expect-out-files/multiple_schema.out.sql +0 -0
  195. /package/{__test__ → __tests__}/dbml2sql/multiple_schema_mssql/in-files/multiple_schema.in.dbml +0 -0
  196. /package/{__test__ → __tests__}/dbml2sql/multiple_schema_mssql/options.json +0 -0
  197. /package/{__test__ → __tests__}/dbml2sql/multiple_schema_mssql/stdout.txt +0 -0
  198. /package/{__test__ → __tests__}/dbml2sql/multiple_schema_mysql/expect-out-files/multiple_schema.out.sql +0 -0
  199. /package/{__test__ → __tests__}/dbml2sql/multiple_schema_mysql/in-files/multiple_schema.in.dbml +0 -0
  200. /package/{__test__ → __tests__}/dbml2sql/multiple_schema_mysql/options.json +0 -0
  201. /package/{__test__ → __tests__}/dbml2sql/multiple_schema_mysql/stdout.txt +0 -0
  202. /package/{__test__ → __tests__}/dbml2sql/multiple_schema_oracle/expect-out-files/multiple_schema.out.sql +0 -0
  203. /package/{__test__ → __tests__}/dbml2sql/multiple_schema_oracle/in-files/multiple_schema.in.dbml +0 -0
  204. /package/{__test__ → __tests__}/dbml2sql/multiple_schema_oracle/options.json +0 -0
  205. /package/{__test__ → __tests__}/dbml2sql/multiple_schema_oracle/stdout.txt +0 -0
  206. /package/{__test__ → __tests__}/dbml2sql/multiple_schema_pg/expect-out-files/multiple_schema.out.sql +0 -0
  207. /package/{__test__ → __tests__}/dbml2sql/multiple_schema_pg/in-files/multiple_schema.in.dbml +0 -0
  208. /package/{__test__ → __tests__}/dbml2sql/multiple_schema_pg/options.json +0 -0
  209. /package/{__test__ → __tests__}/dbml2sql/multiple_schema_pg/stdout.txt +0 -0
  210. /package/{__test__ → __tests__}/dbml2sql/syntax-error/in-files/ecommerce.dbml +0 -0
  211. /package/{__test__ → __tests__}/dbml2sql/syntax-error/options.json +0 -0
  212. /package/{__test__ → __tests__}/dbml2sql/syntax-error/stdout.txt +0 -0
  213. /package/{__test__ → __tests__}/sql2dbml/filename --mssql --out-file/expect-out-files/schema.dbml +0 -0
  214. /package/{__test__ → __tests__}/sql2dbml/filename --mssql --out-file/in-files/schema.sql +0 -0
  215. /package/{__test__ → __tests__}/sql2dbml/filename --mssql --out-file/options.json +0 -0
  216. /package/{__test__ → __tests__}/sql2dbml/filename --mssql --out-file/stdout.txt +0 -0
  217. /package/{__test__ → __tests__}/sql2dbml/filename --mysql --out-file/expect-out-files/schema.dbml +0 -0
  218. /package/{__test__ → __tests__}/sql2dbml/filename --mysql --out-file/in-files/schema.sql +0 -0
  219. /package/{__test__ → __tests__}/sql2dbml/filename --mysql --out-file/options.json +0 -0
  220. /package/{__test__ → __tests__}/sql2dbml/filename --mysql --out-file/stdout.txt +0 -0
  221. /package/{__test__ → __tests__}/sql2dbml/filename --mysql stdout/in-files/schema.sql +0 -0
  222. /package/{__test__ → __tests__}/sql2dbml/filename --mysql stdout/options.json +0 -0
  223. /package/{__test__ → __tests__}/sql2dbml/filename --mysql stdout/stdout.txt +0 -0
  224. /package/{__test__ → __tests__}/sql2dbml/filename --out-file/expect-out-files/schema.dbml +0 -0
  225. /package/{__test__ → __tests__}/sql2dbml/filename --out-file/in-files/schema.sql +0 -0
  226. /package/{__test__ → __tests__}/sql2dbml/filename --out-file/options.json +0 -0
  227. /package/{__test__/sql2dbml/filename --postgres --out-file/expect-out-files → __tests__/sql2dbml/filename --out-file/out-files}/schema.dbml +0 -0
  228. /package/{__test__ → __tests__}/sql2dbml/filename --out-file/stdout.txt +0 -0
  229. /package/{__test__ → __tests__}/sql2dbml/filename --postgres --out-file/in-files/schema.sql +0 -0
  230. /package/{__test__ → __tests__}/sql2dbml/filename --postgres --out-file/options.json +0 -0
  231. /package/{__test__ → __tests__}/sql2dbml/filename --postgres --out-file/stdout.txt +0 -0
  232. /package/{__test__ → __tests__}/sql2dbml/filename --postgres stdout/in-files/schema.sql +0 -0
  233. /package/{__test__ → __tests__}/sql2dbml/filename --postgres stdout/options.json +0 -0
  234. /package/{__test__ → __tests__}/sql2dbml/filename --postgres stdout/stdout.txt +0 -0
  235. /package/{__test__ → __tests__}/sql2dbml/filename --snowflake stdout/in-files/schema.sql +0 -0
  236. /package/{__test__ → __tests__}/sql2dbml/filename --snowflake stdout/options.json +0 -0
  237. /package/{__test__ → __tests__}/sql2dbml/filename --snowflake stdout/stdout.txt +0 -0
  238. /package/{__test__ → __tests__}/sql2dbml/filename stdout/in-files/schema.sql +0 -0
  239. /package/{__test__ → __tests__}/sql2dbml/filename stdout/options.json +0 -0
  240. /package/{__test__ → __tests__}/sql2dbml/filename stdout/stdout.txt +0 -0
  241. /package/{__test__ → __tests__}/sql2dbml/filenames --mysql --out-file/expect-out-files/schema.dbml +0 -0
  242. /package/{__test__ → __tests__}/sql2dbml/filenames --mysql --out-file/in-files/business.sql +0 -0
  243. /package/{__test__ → __tests__}/sql2dbml/filenames --mysql --out-file/in-files/customer.sql +0 -0
  244. /package/{__test__ → __tests__}/sql2dbml/filenames --mysql --out-file/in-files/inventory.sql +0 -0
  245. /package/{__test__ → __tests__}/sql2dbml/filenames --mysql --out-file/options.json +0 -0
  246. /package/{__test__ → __tests__}/sql2dbml/filenames --mysql --out-file/stdout.txt +0 -0
  247. /package/{__test__ → __tests__}/sql2dbml/filenames --mysql stdout/in-files/business.sql +0 -0
  248. /package/{__test__ → __tests__}/sql2dbml/filenames --mysql stdout/in-files/customer.sql +0 -0
  249. /package/{__test__ → __tests__}/sql2dbml/filenames --mysql stdout/in-files/inventory.sql +0 -0
  250. /package/{__test__ → __tests__}/sql2dbml/filenames --mysql stdout/options.json +0 -0
  251. /package/{__test__ → __tests__}/sql2dbml/filenames --mysql stdout/stdout.txt +0 -0
  252. /package/{__test__ → __tests__}/sql2dbml/filenames --out-file/expect-out-files/schema.dbml +0 -0
  253. /package/{__test__ → __tests__}/sql2dbml/filenames --out-file/in-files/business.sql +0 -0
  254. /package/{__test__ → __tests__}/sql2dbml/filenames --out-file/in-files/customer.sql +0 -0
  255. /package/{__test__ → __tests__}/sql2dbml/filenames --out-file/in-files/inventory.sql +0 -0
  256. /package/{__test__ → __tests__}/sql2dbml/filenames --out-file/options.json +0 -0
  257. /package/{__test__/sql2dbml/filenames --postgres --out-file/expect-out-files → __tests__/sql2dbml/filenames --out-file/out-files}/schema.dbml +0 -0
  258. /package/{__test__ → __tests__}/sql2dbml/filenames --out-file/stdout.txt +0 -0
  259. /package/{__test__ → __tests__}/sql2dbml/filenames --postgres --out-file/in-files/business.sql +0 -0
  260. /package/{__test__ → __tests__}/sql2dbml/filenames --postgres --out-file/in-files/customer.sql +0 -0
  261. /package/{__test__ → __tests__}/sql2dbml/filenames --postgres --out-file/in-files/inventory.sql +0 -0
  262. /package/{__test__ → __tests__}/sql2dbml/filenames --postgres --out-file/options.json +0 -0
  263. /package/{__test__ → __tests__}/sql2dbml/filenames --postgres --out-file/stdout.txt +0 -0
  264. /package/{__test__ → __tests__}/sql2dbml/filenames --postgres stdout/in-files/business.sql +0 -0
  265. /package/{__test__ → __tests__}/sql2dbml/filenames --postgres stdout/in-files/customer.sql +0 -0
  266. /package/{__test__ → __tests__}/sql2dbml/filenames --postgres stdout/in-files/inventory.sql +0 -0
  267. /package/{__test__ → __tests__}/sql2dbml/filenames --postgres stdout/options.json +0 -0
  268. /package/{__test__ → __tests__}/sql2dbml/filenames --postgres stdout/stdout.txt +0 -0
  269. /package/{__test__ → __tests__}/sql2dbml/filenames stdout/in-files/business.sql +0 -0
  270. /package/{__test__ → __tests__}/sql2dbml/filenames stdout/in-files/customer.sql +0 -0
  271. /package/{__test__ → __tests__}/sql2dbml/filenames stdout/in-files/inventory.sql +0 -0
  272. /package/{__test__ → __tests__}/sql2dbml/filenames stdout/options.json +0 -0
  273. /package/{__test__ → __tests__}/sql2dbml/filenames stdout/stdout.txt +0 -0
  274. /package/{__test__ → __tests__}/sql2dbml/multiple_schema_mssql/expect-out-files/multiple_schema.out.dbml +0 -0
  275. /package/{__test__ → __tests__}/sql2dbml/multiple_schema_mssql/in-files/multiple_schema.in.sql +0 -0
  276. /package/{__test__ → __tests__}/sql2dbml/multiple_schema_mssql/options.json +0 -0
  277. /package/{__test__ → __tests__}/sql2dbml/multiple_schema_mssql/stdout.txt +0 -0
  278. /package/{__test__ → __tests__}/sql2dbml/multiple_schema_mysql/expect-out-files/multiple_schema.out.dbml +0 -0
  279. /package/{__test__ → __tests__}/sql2dbml/multiple_schema_mysql/in-files/multiple_schema.in.sql +0 -0
  280. /package/{__test__ → __tests__}/sql2dbml/multiple_schema_mysql/options.json +0 -0
  281. /package/{__test__ → __tests__}/sql2dbml/multiple_schema_mysql/stdout.txt +0 -0
  282. /package/{__test__ → __tests__}/sql2dbml/multiple_schema_pg/expect-out-files/multiple_schema.out.dbml +0 -0
  283. /package/{__test__ → __tests__}/sql2dbml/multiple_schema_pg/in-files/multiple_schema.in.sql +0 -0
  284. /package/{__test__ → __tests__}/sql2dbml/multiple_schema_pg/options.json +0 -0
  285. /package/{__test__ → __tests__}/sql2dbml/multiple_schema_pg/stdout.txt +0 -0
  286. /package/{__test__ → __tests__}/sql2dbml/syntax-error/in-files/business.sql +0 -0
  287. /package/{__test__ → __tests__}/sql2dbml/syntax-error/options.json +0 -0
  288. /package/{__test__ → __tests__}/sql2dbml/syntax-error/stdout.txt +0 -0
  289. /package/{__test__ → __tests__}/sql2dbml/syntax-error-duplicate-endpoints --mssql/in-files/schema.sql +0 -0
  290. /package/{__test__ → __tests__}/sql2dbml/syntax-error-duplicate-endpoints --mssql/options.json +0 -0
  291. /package/{__test__ → __tests__}/sql2dbml/syntax-error-duplicate-endpoints --mssql/stdout.txt +0 -0
  292. /package/{__test__ → __tests__}/sql2dbml/syntax-error-duplicate-endpoints --mysql/in-files/schema.sql +0 -0
  293. /package/{__test__ → __tests__}/sql2dbml/syntax-error-duplicate-endpoints --mysql/options.json +0 -0
  294. /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);
@@ -42,7 +42,7 @@ describe('@dbml/cli', () => {
42
42
  };
43
43
 
44
44
  const timeout = 100000;
45
- /* eslint-disable */
45
+
46
46
  test.each(scanDirNames(__dirname, 'dbml2sql'))('dbml2sql/%s', async (dirName) => {
47
47
  await runTest(path.join(__dirname, 'dbml2sql', dirName), '../bin/dbml2sql.js');
48
48
  }, timeout);
@@ -54,5 +54,4 @@ describe('@dbml/cli', () => {
54
54
  test.each(scanDirNames(__dirname, 'db2dbml'))('db2dbml/%s', async (dirName) => {
55
55
  await runTest(path.join(__dirname, 'db2dbml', dirName), '../bin/db2dbml.js');
56
56
  }, timeout);
57
- /* eslint-enable */
58
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
+
@@ -0,0 +1,226 @@
1
+ Table "dbo"."users" {
2
+ "user_id" int(10) [pk, not null, increment]
3
+ "username" varchar(50) [unique, not null]
4
+ "email" varchar(100) [unique, not null, check: `[email] like '%_@_%._%'`]
5
+ "password_hash" varchar(255) [not null]
6
+ "first_name" varchar(50)
7
+ "last_name" varchar(50)
8
+ "full_name" varchar(100)
9
+ "full_name_lower" varchar(100)
10
+ "date_of_birth" date [check: `[date_of_birth]<=dateadd(year,(-13),getdate())`]
11
+ "created_at" datetime2 [default: `getdate()`]
12
+ "last_login" datetime2
13
+ "is_active" bit [default: 1]
14
+
15
+ Indexes {
16
+ email [type: nonclustered, name: "idx_users_email"]
17
+ full_name [type: nonclustered, name: "idx_users_full_name"]
18
+ (is_active, full_name_lower) [type: nonclustered, name: "idx_users_is_active_full_name"]
19
+ }
20
+ }
21
+
22
+ Table "dbo"."products" {
23
+ "product_id" int(10) [pk, not null, increment]
24
+ "name" varchar(100) [not null]
25
+ "description" text
26
+ "price" decimal(10,2) [not null, check: `[price]>(0)`]
27
+ "stock_quantity" int(10) [not null, check: `[stock_quantity]>=(0)`, default: 0]
28
+ "category" varchar(50)
29
+ "created_at" datetime2 [default: `getdate()`]
30
+ "updated_at" datetime2 [default: `getdate()`]
31
+ "is_available" bit [default: 1]
32
+
33
+ Indexes {
34
+ category [type: nonclustered, name: "idx_products_category"]
35
+ }
36
+ }
37
+
38
+ Table "dbo"."orders" {
39
+ "order_id" int(10) [pk, not null, increment]
40
+ "user_id" int(10) [not null]
41
+ "order_date" datetime2 [default: `getdate()`]
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']
44
+ "shipping_address" text [not null]
45
+ "billing_address" text [not null]
46
+
47
+ Indexes {
48
+ (user_id, order_date) [type: nonclustered, name: "idx_orders_user_date"]
49
+ }
50
+ }
51
+
52
+ Table "dbo"."order_items" {
53
+ "order_item_id" int(10) [pk, not null, increment]
54
+ "order_id" int(10) [unique, not null]
55
+ "product_id" int(10) [unique, not null]
56
+ "quantity" int(10) [not null, check: `[quantity]>(0)`]
57
+ "unit_price" decimal(10,2) [not null, check: `[unit_price]>(0)`]
58
+
59
+ Indexes {
60
+ (order_id, product_id) [type: nonclustered, name: "idx_order_items_order_product"]
61
+ }
62
+ }
63
+
64
+ Table "dbo"."StringTypes" {
65
+ "Id" int(10) [pk, not null, increment]
66
+ "CharField" char(10) [default: 'N/A']
67
+ "VarcharField" varchar(50) [default: '{"default_key": "default_value"}']
68
+ "VarcharMaxField" varchar(MAX) [default: 'N/A']
69
+ "TextField" text [default: 'N/A']
70
+ "NCharField" nchar(10) [default: `N'N/A'`]
71
+ "NVarCharField" nvarchar(50) [default: `N'N/A'`]
72
+ "NVarCharMaxField" nvarchar(MAX) [default: `N'N/A'`]
73
+ "NTextField" ntext [default: `N'N/A'`]
74
+ }
75
+
76
+ Table "dbo"."NumberTypes" {
77
+ "ID" int(10) [pk, not null, increment]
78
+ "TINYINTCol" tinyint(3) [default: 0]
79
+ "SMALLINTCol" smallint(5) [default: 0]
80
+ "INTCol" int(10) [default: 0]
81
+ "BIGINTCol" bigint(19) [default: 0]
82
+ "DECIMALCol" decimal(10,2) [default: 0.00]
83
+ "NUMERICCol" numeric(10,2) [default: 0.00]
84
+ "FLOATCol" float(53) [default: 0.0]
85
+ "REALCol" real(24) [default: 0.0]
86
+ "BITCol" bit [default: 0]
87
+ }
88
+
89
+ Table "dbo"."NumberTypesNoDefault" {
90
+ "ID" int(10) [pk, not null, increment]
91
+ "TINYINTCol" tinyint(3)
92
+ "SMALLINTCol" smallint(5)
93
+ "INTCol" int(10)
94
+ "BIGINTCol" bigint(19)
95
+ "DECIMALCol" decimal(10,2)
96
+ "NUMERICCol" numeric(10,2)
97
+ "FLOATCol" float(53)
98
+ "REALCol" real(24)
99
+ "BITCol" bit
100
+ }
101
+
102
+ Table "dbo"."DatetimeTypes" {
103
+ "ID" int(10) [pk, not null, increment]
104
+ "DATECol" date [default: `getdate()`]
105
+ "TIMECol" time [default: `CONVERT([time],getdate())`]
106
+ "DATETIMECol" datetime [default: `getdate()`]
107
+ "DATETIME2Col" datetime2 [default: `sysdatetime()`]
108
+ "SMALLDATETIMECol" smalldatetime [default: `getdate()`]
109
+ "ROWVERSIONCol" timestamp [not null]
110
+ "DATETIMEOFFSETCol" datetimeoffset [default: `sysdatetimeoffset()`]
111
+ }
112
+
113
+ Table "dbo"."ObjectTypes" {
114
+ "Id" int(10) [pk, not null, increment]
115
+ "XmlField" xml [default: '''<Books>
116
+ <Book>
117
+ <Title>The Great Gatsby</Title>
118
+ <Author>F. Scott Fitzgerald</Author>
119
+ <Year>1925</Year>
120
+ <Price>10.99</Price>
121
+ <Publisher>Scribner</Publisher>
122
+ <Location>New York</Location>
123
+ <Genre>Fiction</Genre>
124
+ <Subgenre>Classic</Subgenre>
125
+ </Book>
126
+ <Book>
127
+ <Title>1984</Title>
128
+ <Author>George Orwell</Author>
129
+ <Year>1949</Year>
130
+ <Price>8.99</Price>
131
+ <Publisher>Secker & Warburg</Publisher>
132
+ <Location>London</Location>
133
+ <Genre>Dystopian</Genre>
134
+ <Subgenre>Political Fiction</Subgenre>
135
+ </Book>
136
+ </Books>''']
137
+ "JsonField" nvarchar(MAX) [default: `N'{"defaultKey": "defaultValue", "status": "active", "count": 0}'`]
138
+ "BinaryField" binary(50) [default: `0x00`]
139
+ "VarBinaryField" varbinary(50) [default: `0x00`]
140
+ "VarBinaryMaxField" varbinary(MAX) [default: `0x00`]
141
+ "ImageField" image [default: `0x00`]
142
+ }
143
+
144
+ Table "dbo"."gender_reference" {
145
+ "value" nvarchar(10) [pk, not null]
146
+ }
147
+
148
+ Table "dbo"."user_define_data_types" {
149
+ "id" int(10) [pk, not null, increment]
150
+ "name" nvarchar(50)
151
+ "gender" nvarchar(10) [check: `[gender]='Other' OR [gender]='Female' OR [gender]='Male'`]
152
+ "age_start" int(10)
153
+ "age_end" int(10)
154
+ "height" float(53)
155
+ "weight" float(53)
156
+
157
+ Checks {
158
+ `[age_start]<=[age_end]` [name: 'chk_age_range']
159
+ }
160
+ }
161
+
162
+ Table "dbo"."table_with_comments" {
163
+ "id" int(10) [pk, not null, increment, note: 'Unique identifier for each item.']
164
+ "name" varchar(100) [note: 'Name of the item.']
165
+ "description" text [note: '''Item\'s description''']
166
+ "created_at" datetime2 [default: `getdate()`, note: 'Timestamp when the item was created.']
167
+ Note: 'This table stores information about various items.'
168
+ }
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
+
177
+ Table "dbo"."Authors" {
178
+ "AuthorID" int(10) [pk, not null]
179
+ "NationalityID" int(10) [pk, not null]
180
+ "AuthorName" nvarchar(100) [unique]
181
+ "BirthYear" int(10) [unique]
182
+ }
183
+
184
+ Table "dbo"."Books" {
185
+ "BookID" int(10) [pk, not null]
186
+ "AuthorID" int(10) [pk, not null]
187
+ "NationalityID" int(10)
188
+ "ISBN" nvarchar(20) [unique]
189
+ "Title" nvarchar(200)
190
+ }
191
+
192
+ Table "dbo"."AddressInfo" {
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
+ }
199
+ }
200
+
201
+ Table "dbo"."AddressInfo2" {
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
+ }
210
+ }
211
+
212
+ Table "dbo"."TestDescriptionTable" {
213
+ "Id" int(10) [note: 'Primary key identifier.']
214
+ "Name" nvarchar(100) [check: `len([Name])>(6)`, note: 'Name of the entity.']
215
+ Note: 'This is the custom comment name on table.'
216
+ }
217
+
218
+ Ref "FK_AuthorNationality":"dbo"."Authors".("AuthorID", "NationalityID") < "dbo"."Books".("AuthorID", "NationalityID")
219
+
220
+ Ref "fk_product":"dbo"."products"."product_id" < "dbo"."order_items"."product_id" [update: cascade]
221
+
222
+ Ref "fk_order":"dbo"."orders"."order_id" < "dbo"."order_items"."order_id" [update: cascade, delete: cascade]
223
+
224
+ Ref "fk_user":"dbo"."users"."user_id" < "dbo"."orders"."user_id" [update: cascade, delete: cascade]
225
+
226
+ Ref "fk_gender":"dbo"."gender_reference"."value" < "dbo"."user_define_data_types"."gender"
@@ -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',
@@ -0,0 +1,3 @@
1
+ 2025-11-17T14:38:15.588Z
2
+ undefined
3
+
@@ -0,0 +1,200 @@
1
+ Enum "status_example_2_s1_enum" {
2
+ "active"
3
+ "inactive"
4
+ "pending"
5
+ }
6
+
7
+ Enum "status_example_2_s2_enum" {
8
+ "active"
9
+ "inactive"
10
+ "pending"
11
+ }
12
+
13
+ Enum "status_example_2_s3_enum" {
14
+ "active"
15
+ "inactive"
16
+ "pending"
17
+ }
18
+
19
+ Enum "status_example_2_s4_enum" {
20
+ "active"
21
+ "inactive"
22
+ "pending"
23
+ }
24
+
25
+ Enum "status_example_2_s5_enum" {
26
+ "0"
27
+ "1"
28
+ "2"
29
+ }
30
+
31
+ Enum "status_example_2_s6_enum" {
32
+ "0"
33
+ "1"
34
+ "2"
35
+ }
36
+
37
+ Enum "status_example_2_s7_enum" {
38
+ "0"
39
+ "1"
40
+ "2"
41
+ }
42
+
43
+ Enum "status_example_2_s8_enum" {
44
+ "0"
45
+ "1"
46
+ "2"
47
+ }
48
+
49
+ Table "categories" {
50
+ "cat_id" "int unsigned" [pk, not null, increment]
51
+ "cat_name" varchar(50) [not null]
52
+ "super_cat_id" "int unsigned"
53
+ "created_at" timestamp [default: `CURRENT_TIMESTAMP`]
54
+ }
55
+
56
+ Table "composite_key_1" {
57
+ "id1_1" "int unsigned" [not null]
58
+ "id1_2" "int unsigned" [not null]
59
+ "email" varchar(255)
60
+ "name" varchar(50)
61
+
62
+ Indexes {
63
+ (id1_1, id1_2) [pk, name: "PRIMARY"]
64
+ (email, name) [unique, name: "uc_unique_composite"]
65
+ }
66
+ }
67
+
68
+ Table "composite_key_2" {
69
+ "id2_1" "int unsigned" [not null]
70
+ "id2_2" "int unsigned" [not null]
71
+
72
+ Indexes {
73
+ (id2_1, id2_2) [pk, name: "PRIMARY"]
74
+ }
75
+ }
76
+
77
+ Table "date_time_example" {
78
+ "default_now" timestamp [default: `CURRENT_TIMESTAMP`]
79
+ "default_local" timestamp [default: `CURRENT_TIMESTAMP`]
80
+ "date_plus_7_days" date [default: `(curdate() + interval 7 day)`]
81
+ "date_minus_30_days" date [default: `(curdate() - interval 30 day)`]
82
+ "timestamp_plus_1_hour" timestamp [default: `(now() + interval 1 hour)`]
83
+ "timestamp_minus_15_minutes" timestamp [default: `(now() - interval 15 minute)`]
84
+ "on_update_1" "datetime on update CURRENT_TIMESTAMP" [default: `CURRENT_TIMESTAMP`]
85
+ "on_update_2" "datetime on update CURRENT_TIMESTAMP" [default: `CURRENT_TIMESTAMP`]
86
+ }
87
+
88
+ Table "default_example" {
89
+ "id" int [pk, not null, increment]
90
+ "column1" varchar(255) [default: `concat(_utf8mb4\'default \',uuid())`]
91
+ "column2" varchar(255) [default: `concat(_utf8mb4\'random \',floor((rand() * 100)))`]
92
+ "column3" varchar(255) [default: '_utf8mb4']
93
+ "column4" double [default: 0.5]
94
+ "created_date" date [default: `curdate()`]
95
+ "first_date" date [default: '2023-01-01']
96
+ "event_time" timestamp [default: '2024-01-01 00:00:00']
97
+ }
98
+
99
+ Table "hash_index_example" {
100
+ "id" int [pk, not null, note: 'unique identifier for each record']
101
+ "name" varchar(100) [note: '''first name\'s of the individual''']
102
+ "name1" varchar(100) [note: '''last name\'s of the individual''']
103
+
104
+ Indexes {
105
+ (name, name1) [type: hash, name: "idx_name_name1"]
106
+ }
107
+ Note: 'table for storing names with a hash index'
108
+ }
109
+
110
+ Table "index_example" {
111
+ "id" int [pk, not null, increment]
112
+ "name_lower" varchar(100) [not null]
113
+ "name_inline" varchar(100) [not null]
114
+ "email" varchar(100) [unique, not null]
115
+ "age" int
116
+ "city" varchar(50)
117
+
118
+ Indexes {
119
+ (city, age) [type: btree, name: "idx_city_age"]
120
+ `city(5)` [type: btree, name: "idx_city_part"]
121
+ name_inline [type: btree, name: "idx_name"]
122
+ `lower(name_lower)` [type: btree, name: "idx_name_lower"]
123
+ }
124
+ }
125
+
126
+ Table "order_items" {
127
+ "order_id" "int unsigned" [not null]
128
+ "product_id" "int unsigned" [not null]
129
+ }
130
+
131
+ Table "orders" {
132
+ "order_id" "int unsigned" [pk, not null, increment]
133
+ "user_id" "int unsigned"
134
+ }
135
+
136
+ Table "products" {
137
+ "id" "int unsigned" [pk, not null, increment]
138
+ "price" decimal(10,2) [not null]
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
+ "updated_at" "timestamp on update CURRENT_TIMESTAMP" [default: `CURRENT_TIMESTAMP`]
142
+
143
+ Checks {
144
+ `(`price` > 0) and (`price` < 1000000)` [name: 'products_chk_1']
145
+ }
146
+ }
147
+
148
+ Table "sqrt_triangle" {
149
+ "side_a" double
150
+ "side_b" double
151
+ "side_c" "double GENERATED ALWAYS AS (sqrt(((`side_a` * `side_a`) + (`side_b` * `side_b`)))) VIRTUAL"
152
+ }
153
+
154
+ Table "status_example_2" {
155
+ "s1" status_example_2_s1_enum [not null]
156
+ "s2" status_example_2_s2_enum
157
+ "s3" status_example_2_s3_enum [default: 'active']
158
+ "s4" status_example_2_s4_enum [default: 'pending']
159
+ "s5" status_example_2_s5_enum
160
+ "s6" status_example_2_s6_enum [not null]
161
+ "s7" status_example_2_s7_enum [default: '1']
162
+ "s8" status_example_2_s8_enum [default: '0']
163
+ }
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
+
177
+ Table "users" {
178
+ "user_id" "int unsigned" [pk, not null, increment]
179
+ "username" varchar(50) [unique, not null]
180
+ "email" varchar(100) [unique, not null]
181
+ "password_hash" varchar(255) [not null]
182
+ "first_name" varchar(50)
183
+ "last_name" varchar(50)
184
+ "date_of_birth" date
185
+ "created_at" timestamp [default: `CURRENT_TIMESTAMP`]
186
+ "last_login" timestamp [default: `CURRENT_TIMESTAMP`]
187
+ "is_active" tinyint(1) [default: 1]
188
+
189
+ Checks {
190
+ ``created_at` <= `last_login`` [name: 'chk_last_login']
191
+ }
192
+ }
193
+
194
+ Ref "fk_test_composite":"composite_key_2".("id2_1", "id2_2") < "composite_key_1".("id1_1", "id1_2")
195
+
196
+ Ref "fk_detail_items_orders":"orders"."order_id" < "order_items"."order_id" [delete: cascade]
197
+
198
+ Ref "fk_detail_items_products":"products"."id" < "order_items"."product_id"
199
+
200
+ Ref "fk_order_user":"users"."user_id" < "orders"."user_id" [delete: set null]
@@ -145,3 +145,12 @@ create table date_time_example (
145
145
  on_update_1 datetime default now() on update now(),
146
146
  on_update_2 datetime default now() on update localtime()
147
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
+