@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.
- package/.babelrc +2 -2
- package/{__test__ → __tests__}/cli.test.js +7 -7
- package/__tests__/db2dbml/mssql/dbml-error.log +11 -0
- package/{__test__ → __tests__}/db2dbml/mssql/expect-out-files/schema.dbml +35 -51
- package/{__test__ → __tests__}/db2dbml/mssql/schema.sql +13 -1
- package/__tests__/db2dbml/mysql/dbml-error.log +3 -0
- package/{__test__ → __tests__}/db2dbml/mysql/expect-out-files/schema.dbml +22 -2
- package/{__test__ → __tests__}/db2dbml/mysql/schema.sql +18 -3
- package/__tests__/db2dbml/postgres/dbml-error.log +7 -0
- package/{__test__ → __tests__}/db2dbml/postgres/expect-out-files/schema.dbml +28 -12
- package/{__test__ → __tests__}/db2dbml/postgres/schema.sql +14 -3
- package/{__test__ → __tests__}/db2dbml_bin.js +0 -1
- package/{__test__ → __tests__}/dbml2sql/filename --mysql --out-file/out-files/schema.sql +1 -1
- package/{__test__ → __tests__}/dbml2sql/filename --oracle --out-file/out-files/schema.sql +1 -1
- package/{__test__/dbml2sql/filename --postgres --out-file → __tests__/dbml2sql/filename --out-file}/out-files/schema.sql +1 -1
- package/{__test__/dbml2sql/filename --out-file → __tests__/dbml2sql/filename --postgres --out-file}/out-files/schema.sql +1 -1
- package/{__test__ → __tests__}/dbml2sql/filenames --mysql --out-file/out-files/schema.sql +1 -1
- package/{__test__ → __tests__}/dbml2sql/filenames --oracle --out-file/out-files/schema.sql +1 -1
- package/{__test__/dbml2sql/filenames --postgres --out-file → __tests__/dbml2sql/filenames --out-file}/out-files/schema.sql +1 -1
- package/{__test__/dbml2sql/filenames --out-file → __tests__/dbml2sql/filenames --postgres --out-file}/out-files/schema.sql +1 -1
- package/{__test__ → __tests__}/dbml2sql/multiple_schema_mssql/out-files/multiple_schema.out.sql +1 -1
- package/{__test__ → __tests__}/dbml2sql/multiple_schema_mysql/out-files/multiple_schema.out.sql +1 -1
- package/{__test__ → __tests__}/dbml2sql/multiple_schema_oracle/out-files/multiple_schema.out.sql +1 -1
- package/{__test__ → __tests__}/dbml2sql/multiple_schema_pg/out-files/multiple_schema.out.sql +1 -1
- package/__tests__/dbml2sql/syntax-error/dbml-error.log +9 -0
- package/{__test__ → __tests__}/dbml2sql_bin.js +0 -1
- package/__tests__/sql2dbml/custom-error-alter-table-column-not-found --oracle/in-files/schema.sql +6 -0
- package/__tests__/sql2dbml/custom-error-alter-table-column-not-found --oracle/options.json +8 -0
- package/__tests__/sql2dbml/custom-error-alter-table-column-not-found --oracle/stdout.txt +4 -0
- package/__tests__/sql2dbml/custom-error-alter-table-table-not-found --oracle/in-files/schema.sql +2 -0
- package/__tests__/sql2dbml/custom-error-alter-table-table-not-found --oracle/options.json +8 -0
- package/__tests__/sql2dbml/custom-error-alter-table-table-not-found --oracle/stdout.txt +4 -0
- package/__tests__/sql2dbml/custom-error-column-comment-column-not-found --oracle/in-files/schema.sql +6 -0
- package/__tests__/sql2dbml/custom-error-column-comment-column-not-found --oracle/options.json +8 -0
- package/__tests__/sql2dbml/custom-error-column-comment-column-not-found --oracle/stdout.txt +4 -0
- package/__tests__/sql2dbml/custom-error-column-comment-table-not-found --oracle/in-files/schema.sql +5 -0
- package/__tests__/sql2dbml/custom-error-column-comment-table-not-found --oracle/options.json +8 -0
- package/__tests__/sql2dbml/custom-error-column-comment-table-not-found --oracle/stdout.txt +4 -0
- package/__tests__/sql2dbml/custom-error-create-index-table-not-found --oracle/in-files/schema.sql +1 -0
- package/__tests__/sql2dbml/custom-error-create-index-table-not-found --oracle/options.json +8 -0
- package/__tests__/sql2dbml/custom-error-create-index-table-not-found --oracle/stdout.txt +4 -0
- package/__tests__/sql2dbml/custom-error-table-comment-table-not-found --oracle/in-files/schema.sql +5 -0
- package/__tests__/sql2dbml/custom-error-table-comment-table-not-found --oracle/options.json +8 -0
- package/__tests__/sql2dbml/custom-error-table-comment-table-not-found --oracle/stdout.txt +4 -0
- package/__tests__/sql2dbml/filename --oracle --out-file/expect-out-files/schema.dbml +83 -0
- package/__tests__/sql2dbml/filename --oracle --out-file/in-files/schema.sql +147 -0
- package/__tests__/sql2dbml/filename --oracle --out-file/options.json +8 -0
- package/__tests__/sql2dbml/filename --oracle --out-file/stdout.txt +1 -0
- package/__tests__/sql2dbml/syntax-error/dbml-error.log +9 -0
- package/__tests__/sql2dbml/syntax-error-duplicate-endpoints --mssql/dbml-error.log +9 -0
- package/__tests__/sql2dbml/syntax-error-duplicate-endpoints --mysql/dbml-error.log +9 -0
- package/{__test__ → __tests__}/sql2dbml_bin.js +0 -1
- package/bin/db2dbml.js +0 -1
- package/bin/dbml2sql.js +0 -1
- package/bin/sql2dbml.js +0 -1
- package/eslint.config.ts +96 -0
- package/jest.config.ts +13 -0
- package/lib/cli/index.js +1 -3
- package/lib/cli/utils.js +8 -6
- package/lib/helpers/logger.js +0 -2
- package/package.json +17 -14
- package/src/cli/index.js +1 -1
- package/src/cli/utils.js +5 -1
- package/src/helpers/logger.js +0 -1
- package/tsconfig.json +13 -5
- package/__test__/db2dbml/mssql/dbml-error.log +0 -337
- package/__test__/db2dbml/mysql/dbml-error.log +0 -230
- package/__test__/db2dbml/postgres/dbml-error.log +0 -63
- package/__test__/dbml2sql/syntax-error/dbml-error.log +0 -345
- package/__test__/sql2dbml/syntax-error/dbml-error.log +0 -342
- package/__test__/sql2dbml/syntax-error-duplicate-endpoints --mssql/dbml-error.log +0 -342
- package/__test__/sql2dbml/syntax-error-duplicate-endpoints --mysql/dbml-error.log +0 -339
- package/dbml-error.log +0 -0
- /package/{__test__ → __tests__}/db2dbml/mssql/options.json +0 -0
- /package/{__test__ → __tests__}/db2dbml/mssql/out-files/schema.dbml +0 -0
- /package/{__test__ → __tests__}/db2dbml/mssql/stdout.txt +0 -0
- /package/{__test__ → __tests__}/db2dbml/mysql/options.json +0 -0
- /package/{__test__ → __tests__}/db2dbml/mysql/out-files/schema.dbml +0 -0
- /package/{__test__ → __tests__}/db2dbml/mysql/stdout.txt +0 -0
- /package/{__test__ → __tests__}/db2dbml/postgres/options.json +0 -0
- /package/{__test__ → __tests__}/db2dbml/postgres/out-files/schema.dbml +0 -0
- /package/{__test__ → __tests__}/db2dbml/postgres/stdout.txt +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filename --mysql --out-file/dbml-error.log +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filename --mysql --out-file/expect-out-files/schema.sql +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filename --mysql --out-file/in-files/schema.dbml +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filename --mysql --out-file/options.json +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filename --mysql --out-file/stdout.txt +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filename --mysql stdout/dbml-error.log +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filename --mysql stdout/in-files/schema.dbml +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filename --mysql stdout/options.json +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filename --mysql stdout/stdout.txt +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filename --oracle --out-file/dbml-error.log +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filename --oracle --out-file/expect-out-files/schema.sql +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filename --oracle --out-file/in-files/schema.dbml +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filename --oracle --out-file/options.json +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filename --oracle --out-file/stdout.txt +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filename --oracle stdout/dbml-error.log +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filename --oracle stdout/in-files/schema.dbml +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filename --oracle stdout/options.json +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filename --oracle stdout/stdout.txt +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filename --out-file/dbml-error.log +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filename --out-file/expect-out-files/schema.sql +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filename --out-file/in-files/schema.dbml +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filename --out-file/options.json +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filename --out-file/stdout.txt +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filename --postgres --out-file/dbml-error.log +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filename --postgres --out-file/expect-out-files/schema.sql +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filename --postgres --out-file/in-files/schema.dbml +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filename --postgres --out-file/options.json +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filename --postgres --out-file/stdout.txt +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filename --postgres stdout/dbml-error.log +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filename --postgres stdout/in-files/schema.dbml +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filename --postgres stdout/options.json +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filename --postgres stdout/stdout.txt +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filename stdout/dbml-error.log +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filename stdout/in-files/schema.dbml +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filename stdout/options.json +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filename stdout/stdout.txt +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --mysql --out-file/dbml-error.log +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --mysql --out-file/expect-out-files/schema.sql +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --mysql --out-file/in-files/business.dbml +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --mysql --out-file/in-files/customer.dbml +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --mysql --out-file/in-files/inventory.dbml +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --mysql --out-file/options.json +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --mysql --out-file/stdout.txt +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --mysql stdout/dbml-error.log +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --mysql stdout/in-files/business.dbml +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --mysql stdout/in-files/customer.dbml +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --mysql stdout/in-files/inventory.dbml +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --mysql stdout/options.json +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --mysql stdout/stdout.txt +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --oracle --out-file/dbml-error.log +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --oracle --out-file/expect-out-files/schema.sql +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --oracle --out-file/in-files/business.dbml +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --oracle --out-file/in-files/customer.dbml +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --oracle --out-file/in-files/inventory.dbml +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --oracle --out-file/options.json +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --oracle --out-file/stdout.txt +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --oracle stdout/dbml-error.log +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --oracle stdout/in-files/business.dbml +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --oracle stdout/in-files/customer.dbml +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --oracle stdout/in-files/inventory.dbml +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --oracle stdout/options.json +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --oracle stdout/stdout.txt +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --out-file/dbml-error.log +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --out-file/expect-out-files/schema.sql +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --out-file/in-files/business.dbml +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --out-file/in-files/customer.dbml +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --out-file/in-files/inventory.dbml +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --out-file/options.json +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --out-file/stdout.txt +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --postgres --out-file/dbml-error.log +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --postgres --out-file/expect-out-files/schema.sql +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --postgres --out-file/in-files/business.dbml +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --postgres --out-file/in-files/customer.dbml +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --postgres --out-file/in-files/inventory.dbml +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --postgres --out-file/options.json +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --postgres --out-file/stdout.txt +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --postgres stdout/dbml-error.log +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --postgres stdout/in-files/business.dbml +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --postgres stdout/in-files/customer.dbml +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --postgres stdout/in-files/inventory.dbml +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --postgres stdout/options.json +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames --postgres stdout/stdout.txt +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames stdout/dbml-error.log +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames stdout/in-files/business.dbml +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames stdout/in-files/customer.dbml +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames stdout/in-files/inventory.dbml +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames stdout/options.json +0 -0
- /package/{__test__ → __tests__}/dbml2sql/filenames stdout/stdout.txt +0 -0
- /package/{__test__ → __tests__}/dbml2sql/multiple_schema_mssql/dbml-error.log +0 -0
- /package/{__test__ → __tests__}/dbml2sql/multiple_schema_mssql/expect-out-files/multiple_schema.out.sql +0 -0
- /package/{__test__ → __tests__}/dbml2sql/multiple_schema_mssql/in-files/multiple_schema.in.dbml +0 -0
- /package/{__test__ → __tests__}/dbml2sql/multiple_schema_mssql/options.json +0 -0
- /package/{__test__ → __tests__}/dbml2sql/multiple_schema_mssql/stdout.txt +0 -0
- /package/{__test__ → __tests__}/dbml2sql/multiple_schema_mysql/dbml-error.log +0 -0
- /package/{__test__ → __tests__}/dbml2sql/multiple_schema_mysql/expect-out-files/multiple_schema.out.sql +0 -0
- /package/{__test__ → __tests__}/dbml2sql/multiple_schema_mysql/in-files/multiple_schema.in.dbml +0 -0
- /package/{__test__ → __tests__}/dbml2sql/multiple_schema_mysql/options.json +0 -0
- /package/{__test__ → __tests__}/dbml2sql/multiple_schema_mysql/stdout.txt +0 -0
- /package/{__test__ → __tests__}/dbml2sql/multiple_schema_oracle/dbml-error.log +0 -0
- /package/{__test__ → __tests__}/dbml2sql/multiple_schema_oracle/expect-out-files/multiple_schema.out.sql +0 -0
- /package/{__test__ → __tests__}/dbml2sql/multiple_schema_oracle/in-files/multiple_schema.in.dbml +0 -0
- /package/{__test__ → __tests__}/dbml2sql/multiple_schema_oracle/options.json +0 -0
- /package/{__test__ → __tests__}/dbml2sql/multiple_schema_oracle/stdout.txt +0 -0
- /package/{__test__ → __tests__}/dbml2sql/multiple_schema_pg/dbml-error.log +0 -0
- /package/{__test__ → __tests__}/dbml2sql/multiple_schema_pg/expect-out-files/multiple_schema.out.sql +0 -0
- /package/{__test__ → __tests__}/dbml2sql/multiple_schema_pg/in-files/multiple_schema.in.dbml +0 -0
- /package/{__test__ → __tests__}/dbml2sql/multiple_schema_pg/options.json +0 -0
- /package/{__test__ → __tests__}/dbml2sql/multiple_schema_pg/stdout.txt +0 -0
- /package/{__test__ → __tests__}/dbml2sql/syntax-error/in-files/ecommerce.dbml +0 -0
- /package/{__test__ → __tests__}/dbml2sql/syntax-error/options.json +0 -0
- /package/{__test__ → __tests__}/dbml2sql/syntax-error/stdout.txt +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename --mssql --out-file/dbml-error.log +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename --mssql --out-file/expect-out-files/schema.dbml +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename --mssql --out-file/in-files/schema.sql +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename --mssql --out-file/options.json +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename --mssql --out-file/out-files/schema.dbml +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename --mssql --out-file/stdout.txt +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename --mysql --out-file/dbml-error.log +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename --mysql --out-file/expect-out-files/schema.dbml +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename --mysql --out-file/in-files/schema.sql +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename --mysql --out-file/options.json +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename --mysql --out-file/out-files/schema.dbml +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename --mysql --out-file/stdout.txt +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename --mysql stdout/dbml-error.log +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename --mysql stdout/in-files/schema.sql +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename --mysql stdout/options.json +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename --mysql stdout/stdout.txt +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename --out-file/dbml-error.log +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename --out-file/expect-out-files/schema.dbml +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename --out-file/in-files/schema.sql +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename --out-file/options.json +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename --out-file/out-files/schema.dbml +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename --out-file/stdout.txt +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename --postgres --out-file/dbml-error.log +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename --postgres --out-file/expect-out-files/schema.dbml +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename --postgres --out-file/in-files/schema.sql +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename --postgres --out-file/options.json +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename --postgres --out-file/out-files/schema.dbml +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename --postgres --out-file/stdout.txt +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename --postgres stdout/dbml-error.log +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename --postgres stdout/in-files/schema.sql +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename --postgres stdout/options.json +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename --postgres stdout/stdout.txt +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename --snowflake stdout/dbml-error.log +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename --snowflake stdout/in-files/schema.sql +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename --snowflake stdout/options.json +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename --snowflake stdout/stdout.txt +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename stdout/dbml-error.log +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename stdout/in-files/schema.sql +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename stdout/options.json +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filename stdout/stdout.txt +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames --mysql --out-file/dbml-error.log +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames --mysql --out-file/expect-out-files/schema.dbml +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames --mysql --out-file/in-files/business.sql +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames --mysql --out-file/in-files/customer.sql +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames --mysql --out-file/in-files/inventory.sql +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames --mysql --out-file/options.json +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames --mysql --out-file/out-files/schema.dbml +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames --mysql --out-file/stdout.txt +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames --mysql stdout/dbml-error.log +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames --mysql stdout/in-files/business.sql +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames --mysql stdout/in-files/customer.sql +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames --mysql stdout/in-files/inventory.sql +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames --mysql stdout/options.json +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames --mysql stdout/stdout.txt +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames --out-file/dbml-error.log +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames --out-file/expect-out-files/schema.dbml +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames --out-file/in-files/business.sql +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames --out-file/in-files/customer.sql +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames --out-file/in-files/inventory.sql +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames --out-file/options.json +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames --out-file/out-files/schema.dbml +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames --out-file/stdout.txt +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames --postgres --out-file/dbml-error.log +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames --postgres --out-file/expect-out-files/schema.dbml +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames --postgres --out-file/in-files/business.sql +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames --postgres --out-file/in-files/customer.sql +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames --postgres --out-file/in-files/inventory.sql +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames --postgres --out-file/options.json +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames --postgres --out-file/out-files/schema.dbml +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames --postgres --out-file/stdout.txt +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames --postgres stdout/dbml-error.log +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames --postgres stdout/in-files/business.sql +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames --postgres stdout/in-files/customer.sql +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames --postgres stdout/in-files/inventory.sql +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames --postgres stdout/options.json +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames --postgres stdout/stdout.txt +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames stdout/dbml-error.log +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames stdout/in-files/business.sql +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames stdout/in-files/customer.sql +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames stdout/in-files/inventory.sql +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames stdout/options.json +0 -0
- /package/{__test__ → __tests__}/sql2dbml/filenames stdout/stdout.txt +0 -0
- /package/{__test__ → __tests__}/sql2dbml/multiple_schema_mssql/dbml-error.log +0 -0
- /package/{__test__ → __tests__}/sql2dbml/multiple_schema_mssql/expect-out-files/multiple_schema.out.dbml +0 -0
- /package/{__test__ → __tests__}/sql2dbml/multiple_schema_mssql/in-files/multiple_schema.in.sql +0 -0
- /package/{__test__ → __tests__}/sql2dbml/multiple_schema_mssql/options.json +0 -0
- /package/{__test__ → __tests__}/sql2dbml/multiple_schema_mssql/out-files/multiple_schema.out.dbml +0 -0
- /package/{__test__ → __tests__}/sql2dbml/multiple_schema_mssql/stdout.txt +0 -0
- /package/{__test__ → __tests__}/sql2dbml/multiple_schema_mysql/dbml-error.log +0 -0
- /package/{__test__ → __tests__}/sql2dbml/multiple_schema_mysql/expect-out-files/multiple_schema.out.dbml +0 -0
- /package/{__test__ → __tests__}/sql2dbml/multiple_schema_mysql/in-files/multiple_schema.in.sql +0 -0
- /package/{__test__ → __tests__}/sql2dbml/multiple_schema_mysql/options.json +0 -0
- /package/{__test__ → __tests__}/sql2dbml/multiple_schema_mysql/out-files/multiple_schema.out.dbml +0 -0
- /package/{__test__ → __tests__}/sql2dbml/multiple_schema_mysql/stdout.txt +0 -0
- /package/{__test__ → __tests__}/sql2dbml/multiple_schema_pg/dbml-error.log +0 -0
- /package/{__test__ → __tests__}/sql2dbml/multiple_schema_pg/expect-out-files/multiple_schema.out.dbml +0 -0
- /package/{__test__ → __tests__}/sql2dbml/multiple_schema_pg/in-files/multiple_schema.in.sql +0 -0
- /package/{__test__ → __tests__}/sql2dbml/multiple_schema_pg/options.json +0 -0
- /package/{__test__ → __tests__}/sql2dbml/multiple_schema_pg/out-files/multiple_schema.out.dbml +0 -0
- /package/{__test__ → __tests__}/sql2dbml/multiple_schema_pg/stdout.txt +0 -0
- /package/{__test__ → __tests__}/sql2dbml/syntax-error/in-files/business.sql +0 -0
- /package/{__test__ → __tests__}/sql2dbml/syntax-error/options.json +0 -0
- /package/{__test__ → __tests__}/sql2dbml/syntax-error/stdout.txt +0 -0
- /package/{__test__ → __tests__}/sql2dbml/syntax-error-duplicate-endpoints --mssql/in-files/schema.sql +0 -0
- /package/{__test__ → __tests__}/sql2dbml/syntax-error-duplicate-endpoints --mssql/options.json +0 -0
- /package/{__test__ → __tests__}/sql2dbml/syntax-error-duplicate-endpoints --mssql/stdout.txt +0 -0
- /package/{__test__ → __tests__}/sql2dbml/syntax-error-duplicate-endpoints --mysql/in-files/schema.sql +0 -0
- /package/{__test__ → __tests__}/sql2dbml/syntax-error-duplicate-endpoints --mysql/options.json +0 -0
- /package/{__test__ → __tests__}/sql2dbml/syntax-error-duplicate-endpoints --mysql/stdout.txt +0 -0
package/.babelrc
CHANGED
|
@@ -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 `
|
|
27
|
-
if (path.basename(dirName).includes('
|
|
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
|
-
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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
|
-
},
|
|
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"
|
|
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"
|
|
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"
|
|
218
|
-
"AddressFormatID"
|
|
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"
|
|
223
|
-
"A2"
|
|
224
|
-
"A3"
|
|
225
|
-
"A4"
|
|
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
|
|
@@ -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
|
+
);
|