@dbml/cli 5.1.0 → 5.3.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 +3 -4
- package/__tests__/db2dbml/mssql/dbml-error.log +44 -0
- package/{__test__ → __tests__}/db2dbml/mssql/expect-out-files/schema.dbml +7 -0
- package/{__test__ → __tests__}/db2dbml/mssql/schema.sql +11 -0
- package/__tests__/db2dbml/mysql/dbml-error.log +12 -0
- package/{__test__ → __tests__}/db2dbml/mysql/expect-out-files/schema.dbml +12 -0
- package/{__test__ → __tests__}/db2dbml/mysql/schema.sql +9 -0
- package/__tests__/db2dbml/oracle/dbml-error.log +91 -0
- package/__tests__/db2dbml/oracle/expect-out-files/schema.dbml +419 -0
- package/__tests__/db2dbml/oracle/options.json +8 -0
- package/__tests__/db2dbml/oracle/out-files/schema.dbml +419 -0
- package/__tests__/db2dbml/oracle/schema.sql +529 -0
- package/__tests__/db2dbml/postgres/dbml-error.log +28 -0
- package/{__test__ → __tests__}/db2dbml/postgres/expect-out-files/schema.dbml +14 -2
- package/{__test__ → __tests__}/db2dbml/postgres/schema.sql +10 -0
- package/__tests__/db2dbml/postgres/stdout.txt +1 -0
- package/{__test__ → __tests__}/db2dbml_bin.js +0 -1
- package/__tests__/dbml2sql/filename --mysql --out-file/dbml-error.log +0 -0
- package/__tests__/dbml2sql/filename --mysql --out-file/out-files/schema.sql +65 -0
- package/__tests__/dbml2sql/filename --mysql stdout/dbml-error.log +0 -0
- package/__tests__/dbml2sql/filename --oracle --out-file/dbml-error.log +0 -0
- package/__tests__/dbml2sql/filename --oracle --out-file/out-files/schema.sql +61 -0
- package/__tests__/dbml2sql/filename --oracle stdout/dbml-error.log +0 -0
- package/__tests__/dbml2sql/filename --out-file/dbml-error.log +0 -0
- package/__tests__/dbml2sql/filename --out-file/out-files/schema.sql +77 -0
- package/__tests__/dbml2sql/filename --postgres --out-file/dbml-error.log +0 -0
- package/__tests__/dbml2sql/filename --postgres --out-file/out-files/schema.sql +77 -0
- package/__tests__/dbml2sql/filename --postgres stdout/dbml-error.log +0 -0
- package/__tests__/dbml2sql/filename stdout/dbml-error.log +0 -0
- package/__tests__/dbml2sql/filenames --mysql --out-file/dbml-error.log +0 -0
- package/__tests__/dbml2sql/filenames --mysql --out-file/out-files/schema.sql +172 -0
- package/__tests__/dbml2sql/filenames --mysql stdout/dbml-error.log +0 -0
- package/__tests__/dbml2sql/filenames --oracle --out-file/dbml-error.log +0 -0
- package/__tests__/dbml2sql/filenames --oracle --out-file/out-files/schema.sql +172 -0
- package/__tests__/dbml2sql/filenames --oracle stdout/dbml-error.log +0 -0
- package/__tests__/dbml2sql/filenames --out-file/dbml-error.log +0 -0
- package/__tests__/dbml2sql/filenames --out-file/out-files/schema.sql +172 -0
- package/__tests__/dbml2sql/filenames --postgres --out-file/dbml-error.log +0 -0
- package/__tests__/dbml2sql/filenames --postgres --out-file/out-files/schema.sql +172 -0
- package/__tests__/dbml2sql/filenames --postgres stdout/dbml-error.log +0 -0
- package/__tests__/dbml2sql/filenames stdout/dbml-error.log +0 -0
- package/__tests__/dbml2sql/multiple_schema_mssql/dbml-error.log +0 -0
- package/__tests__/dbml2sql/multiple_schema_mssql/out-files/multiple_schema.out.sql +62 -0
- package/__tests__/dbml2sql/multiple_schema_mysql/dbml-error.log +0 -0
- package/__tests__/dbml2sql/multiple_schema_mysql/out-files/multiple_schema.out.sql +50 -0
- package/__tests__/dbml2sql/multiple_schema_oracle/dbml-error.log +0 -0
- package/__tests__/dbml2sql/multiple_schema_oracle/out-files/multiple_schema.out.sql +88 -0
- package/__tests__/dbml2sql/multiple_schema_pg/dbml-error.log +0 -0
- package/__tests__/dbml2sql/multiple_schema_pg/out-files/multiple_schema.out.sql +67 -0
- package/__tests__/dbml2sql/syntax-error/dbml-error.log +15 -0
- package/{__test__ → __tests__}/dbml2sql_bin.js +0 -1
- package/__tests__/sql2dbml/custom-error-alter-table-column-not-found --oracle/dbml-error.log +51 -0
- 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/out-files/schema.dbml +0 -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/dbml-error.log +51 -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/out-files/schema.dbml +0 -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/dbml-error.log +51 -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/out-files/schema.dbml +0 -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/dbml-error.log +51 -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/out-files/schema.dbml +0 -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/dbml-error.log +51 -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/out-files/schema.dbml +0 -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/dbml-error.log +27 -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/out-files/schema.dbml +0 -0
- package/__tests__/sql2dbml/custom-error-table-comment-table-not-found --oracle/stdout.txt +4 -0
- package/__tests__/sql2dbml/filename --mssql --out-file/dbml-error.log +0 -0
- package/__tests__/sql2dbml/filename --mssql --out-file/out-files/schema.dbml +25 -0
- package/__tests__/sql2dbml/filename --mysql --out-file/dbml-error.log +0 -0
- package/__tests__/sql2dbml/filename --mysql --out-file/out-files/schema.dbml +74 -0
- package/__tests__/sql2dbml/filename --mysql stdout/dbml-error.log +0 -0
- package/__tests__/sql2dbml/filename --oracle --out-file/dbml-error.log +0 -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/out-files/schema.dbml +83 -0
- package/__tests__/sql2dbml/filename --oracle --out-file/stdout.txt +1 -0
- package/__tests__/sql2dbml/filename --out-file/dbml-error.log +0 -0
- package/__tests__/sql2dbml/filename --postgres --out-file/dbml-error.log +0 -0
- package/__tests__/sql2dbml/filename --postgres --out-file/expect-out-files/schema.dbml +74 -0
- package/__tests__/sql2dbml/filename --postgres --out-file/out-files/schema.dbml +74 -0
- package/__tests__/sql2dbml/filename --postgres stdout/dbml-error.log +0 -0
- package/__tests__/sql2dbml/filename --snowflake stdout/dbml-error.log +0 -0
- package/__tests__/sql2dbml/filename stdout/dbml-error.log +0 -0
- package/__tests__/sql2dbml/filenames --mysql --out-file/dbml-error.log +0 -0
- package/__tests__/sql2dbml/filenames --mysql --out-file/out-files/schema.dbml +170 -0
- package/__tests__/sql2dbml/filenames --mysql stdout/dbml-error.log +0 -0
- package/__tests__/sql2dbml/filenames --out-file/dbml-error.log +0 -0
- package/__tests__/sql2dbml/filenames --postgres --out-file/dbml-error.log +0 -0
- package/__tests__/sql2dbml/filenames --postgres --out-file/expect-out-files/schema.dbml +170 -0
- package/__tests__/sql2dbml/filenames --postgres --out-file/out-files/schema.dbml +170 -0
- package/__tests__/sql2dbml/filenames --postgres stdout/dbml-error.log +0 -0
- package/__tests__/sql2dbml/filenames stdout/dbml-error.log +0 -0
- package/__tests__/sql2dbml/multiple_schema_mssql/dbml-error.log +0 -0
- package/__tests__/sql2dbml/multiple_schema_mssql/out-files/multiple_schema.out.dbml +58 -0
- package/__tests__/sql2dbml/multiple_schema_mysql/dbml-error.log +0 -0
- package/__tests__/sql2dbml/multiple_schema_mysql/out-files/multiple_schema.out.dbml +136 -0
- package/__tests__/sql2dbml/multiple_schema_pg/dbml-error.log +0 -0
- package/__tests__/sql2dbml/multiple_schema_pg/out-files/multiple_schema.out.dbml +101 -0
- package/__tests__/sql2dbml/syntax-error/dbml-error.log +51 -0
- package/__tests__/sql2dbml/syntax-error-duplicate-endpoints --mssql/dbml-error.log +51 -0
- package/__tests__/sql2dbml/syntax-error-duplicate-endpoints --mysql/dbml-error.log +51 -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 +2 -3
- package/lib/cli/utils.js +9 -7
- package/lib/helpers/logger.js +0 -2
- package/package.json +17 -14
- package/src/cli/index.js +2 -1
- package/src/cli/utils.js +6 -2
- package/src/helpers/logger.js +0 -1
- package/tsconfig.json +13 -5
- /package/{__test__ → __tests__}/db2dbml/mssql/options.json +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/stdout.txt +0 -0
- /package/{__test__/db2dbml/postgres → __tests__/db2dbml/oracle}/stdout.txt +0 -0
- /package/{__test__ → __tests__}/db2dbml/postgres/options.json +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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/stdout.txt +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/stdout.txt +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/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__/sql2dbml/filename --postgres --out-file/expect-out-files → __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/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/stdout.txt +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/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/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/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/stdout.txt +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/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__/sql2dbml/filenames --postgres --out-file/expect-out-files → __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/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/stdout.txt +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/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/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/stdout.txt +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/stdout.txt +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/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
|
@@ -0,0 +1,529 @@
|
|
|
1
|
+
-- ============================================================================
|
|
2
|
+
-- ORACLE CONNECTOR TEST SCHEMA
|
|
3
|
+
-- Each test case uses a separate set of tables to avoid accumulated effects
|
|
4
|
+
-- ============================================================================
|
|
5
|
+
|
|
6
|
+
-- ============================================================================
|
|
7
|
+
-- CASE 1: CREATE TABLE with PRIMARY KEY
|
|
8
|
+
-- ============================================================================
|
|
9
|
+
CREATE TABLE pk_simple (
|
|
10
|
+
id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
11
|
+
name VARCHAR2(100) NOT NULL
|
|
12
|
+
);
|
|
13
|
+
|
|
14
|
+
-- ============================================================================
|
|
15
|
+
-- CASE 2: CREATE TABLE with SELF-REFERENCING FOREIGN KEY
|
|
16
|
+
-- ============================================================================
|
|
17
|
+
CREATE TABLE self_ref_fk (
|
|
18
|
+
id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
19
|
+
parent_id NUMBER,
|
|
20
|
+
name VARCHAR2(100) NOT NULL,
|
|
21
|
+
CONSTRAINT fk_self_ref FOREIGN KEY (parent_id) REFERENCES self_ref_fk(id) ON DELETE SET NULL
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
-- ============================================================================
|
|
25
|
+
-- CASE 3: CREATE TABLE with NON-SELF-REFERENCING FOREIGN KEY
|
|
26
|
+
-- ============================================================================
|
|
27
|
+
CREATE TABLE fk_parent (
|
|
28
|
+
id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
29
|
+
name VARCHAR2(100) NOT NULL
|
|
30
|
+
);
|
|
31
|
+
|
|
32
|
+
CREATE TABLE fk_child (
|
|
33
|
+
id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
34
|
+
parent_id NUMBER NOT NULL,
|
|
35
|
+
description VARCHAR2(200),
|
|
36
|
+
CONSTRAINT fk_child_parent FOREIGN KEY (parent_id) REFERENCES fk_parent(id) ON DELETE CASCADE
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
-- ============================================================================
|
|
40
|
+
-- CASE 4: CREATE TABLE with CHECK CONSTRAINTS
|
|
41
|
+
-- ============================================================================
|
|
42
|
+
CREATE TABLE check_constraints (
|
|
43
|
+
id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
44
|
+
age NUMBER NOT NULL,
|
|
45
|
+
salary NUMBER(10, 2) NOT NULL,
|
|
46
|
+
status VARCHAR2(20) NOT NULL,
|
|
47
|
+
start_date DATE,
|
|
48
|
+
end_date DATE,
|
|
49
|
+
CONSTRAINT chk_age_positive CHECK (age > 0),
|
|
50
|
+
CONSTRAINT chk_salary_range CHECK (salary BETWEEN 0 AND 1000000),
|
|
51
|
+
CONSTRAINT chk_status_values CHECK (status IN ('active', 'inactive', 'pending')),
|
|
52
|
+
CONSTRAINT chk_date_range CHECK (start_date <= end_date)
|
|
53
|
+
);
|
|
54
|
+
|
|
55
|
+
-- ============================================================================
|
|
56
|
+
-- CASE 5: CREATE TABLE with DEFAULT VALUES
|
|
57
|
+
-- ============================================================================
|
|
58
|
+
CREATE TABLE default_values (
|
|
59
|
+
id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
60
|
+
str_default VARCHAR2(50) DEFAULT 'default_string',
|
|
61
|
+
num_default NUMBER DEFAULT 42,
|
|
62
|
+
decimal_default NUMBER(10, 2) DEFAULT 99.99,
|
|
63
|
+
date_default DATE DEFAULT SYSDATE,
|
|
64
|
+
timestamp_default TIMESTAMP DEFAULT SYSTIMESTAMP,
|
|
65
|
+
char_default CHAR(10) DEFAULT 'fixed'
|
|
66
|
+
);
|
|
67
|
+
|
|
68
|
+
-- ============================================================================
|
|
69
|
+
-- CASE 6: CREATE TABLE with NOT NULL columns
|
|
70
|
+
-- ============================================================================
|
|
71
|
+
CREATE TABLE not_null_cols (
|
|
72
|
+
id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
73
|
+
required_str VARCHAR2(100) NOT NULL,
|
|
74
|
+
required_num NUMBER NOT NULL,
|
|
75
|
+
required_date DATE NOT NULL
|
|
76
|
+
);
|
|
77
|
+
|
|
78
|
+
-- ============================================================================
|
|
79
|
+
-- CASE 7: CREATE TABLE with NULLABLE columns
|
|
80
|
+
-- ============================================================================
|
|
81
|
+
CREATE TABLE nullable_cols (
|
|
82
|
+
id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
83
|
+
optional_str VARCHAR2(100),
|
|
84
|
+
optional_num NUMBER,
|
|
85
|
+
optional_date DATE
|
|
86
|
+
);
|
|
87
|
+
|
|
88
|
+
-- ============================================================================
|
|
89
|
+
-- CASE 8: CREATE TABLE with AUTOINCREMENT (IDENTITY)
|
|
90
|
+
-- ============================================================================
|
|
91
|
+
CREATE TABLE autoincrement_table (
|
|
92
|
+
id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
93
|
+
name VARCHAR2(100) NOT NULL
|
|
94
|
+
);
|
|
95
|
+
|
|
96
|
+
-- ============================================================================
|
|
97
|
+
-- CASE 9: CREATE TABLE with UNIQUE constraint
|
|
98
|
+
-- ============================================================================
|
|
99
|
+
CREATE TABLE unique_cols (
|
|
100
|
+
id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
101
|
+
email VARCHAR2(100) NOT NULL UNIQUE,
|
|
102
|
+
username VARCHAR2(50) NOT NULL,
|
|
103
|
+
CONSTRAINT uq_username UNIQUE (username)
|
|
104
|
+
);
|
|
105
|
+
|
|
106
|
+
-- ============================================================================
|
|
107
|
+
-- CASE 10: CREATE TABLE with COMPOSITE PRIMARY KEY
|
|
108
|
+
-- ============================================================================
|
|
109
|
+
CREATE TABLE composite_pk (
|
|
110
|
+
region_id NUMBER NOT NULL,
|
|
111
|
+
product_id NUMBER NOT NULL,
|
|
112
|
+
quantity NUMBER DEFAULT 0,
|
|
113
|
+
price NUMBER(10, 2),
|
|
114
|
+
CONSTRAINT pk_composite PRIMARY KEY (region_id, product_id)
|
|
115
|
+
);
|
|
116
|
+
|
|
117
|
+
-- ============================================================================
|
|
118
|
+
-- CASE 11: CREATE TABLE with COMPOSITE SELF-REFERENCING FOREIGN KEY
|
|
119
|
+
-- ============================================================================
|
|
120
|
+
CREATE TABLE composite_self_ref (
|
|
121
|
+
dept_id NUMBER NOT NULL,
|
|
122
|
+
emp_id NUMBER NOT NULL,
|
|
123
|
+
parent_dept_id NUMBER,
|
|
124
|
+
parent_emp_id NUMBER,
|
|
125
|
+
name VARCHAR2(100) NOT NULL,
|
|
126
|
+
CONSTRAINT pk_composite_self_ref PRIMARY KEY (dept_id, emp_id),
|
|
127
|
+
CONSTRAINT fk_composite_self FOREIGN KEY (parent_dept_id, parent_emp_id)
|
|
128
|
+
REFERENCES composite_self_ref(dept_id, emp_id) ON DELETE SET NULL
|
|
129
|
+
);
|
|
130
|
+
|
|
131
|
+
-- ============================================================================
|
|
132
|
+
-- CASE 12: CREATE TABLE with COMPOSITE UNIQUE constraint
|
|
133
|
+
-- ============================================================================
|
|
134
|
+
CREATE TABLE composite_unique (
|
|
135
|
+
id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
136
|
+
first_name VARCHAR2(50) NOT NULL,
|
|
137
|
+
last_name VARCHAR2(50) NOT NULL,
|
|
138
|
+
email VARCHAR2(100),
|
|
139
|
+
CONSTRAINT uq_full_name UNIQUE (first_name, last_name)
|
|
140
|
+
);
|
|
141
|
+
|
|
142
|
+
-- ============================================================================
|
|
143
|
+
-- CASE 13: FUNCTIONAL INDEX
|
|
144
|
+
-- ============================================================================
|
|
145
|
+
CREATE TABLE functional_index_table (
|
|
146
|
+
id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
147
|
+
full_name VARCHAR2(100) NOT NULL,
|
|
148
|
+
email VARCHAR2(100) NOT NULL
|
|
149
|
+
);
|
|
150
|
+
|
|
151
|
+
CREATE INDEX idx_lower_name ON functional_index_table (LOWER(full_name));
|
|
152
|
+
CREATE INDEX idx_upper_email ON functional_index_table (UPPER(email));
|
|
153
|
+
|
|
154
|
+
-- ============================================================================
|
|
155
|
+
-- CASE 14: COMPOSITE INDEX
|
|
156
|
+
-- ============================================================================
|
|
157
|
+
CREATE TABLE composite_index_table (
|
|
158
|
+
id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
159
|
+
first_name VARCHAR2(50) NOT NULL,
|
|
160
|
+
last_name VARCHAR2(50) NOT NULL,
|
|
161
|
+
department VARCHAR2(50)
|
|
162
|
+
);
|
|
163
|
+
|
|
164
|
+
CREATE INDEX idx_composite_name ON composite_index_table (first_name, last_name);
|
|
165
|
+
CREATE INDEX idx_composite_dept ON composite_index_table (department, last_name);
|
|
166
|
+
|
|
167
|
+
-- ============================================================================
|
|
168
|
+
-- CASE 15: MIXED FUNCTIONAL AND COLUMN INDEX
|
|
169
|
+
-- ============================================================================
|
|
170
|
+
CREATE TABLE mixed_index_table (
|
|
171
|
+
id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
172
|
+
first_name VARCHAR2(50) NOT NULL,
|
|
173
|
+
last_name VARCHAR2(50) NOT NULL,
|
|
174
|
+
email VARCHAR2(100)
|
|
175
|
+
);
|
|
176
|
+
|
|
177
|
+
CREATE INDEX idx_mixed_name ON mixed_index_table (LOWER(first_name), last_name);
|
|
178
|
+
CREATE INDEX idx_mixed_email ON mixed_index_table (first_name, UPPER(email));
|
|
179
|
+
|
|
180
|
+
-- ============================================================================
|
|
181
|
+
-- CASE 16: COLUMN INDEX (simple)
|
|
182
|
+
-- ============================================================================
|
|
183
|
+
CREATE TABLE column_index_table (
|
|
184
|
+
id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
185
|
+
category VARCHAR2(50),
|
|
186
|
+
status VARCHAR2(20),
|
|
187
|
+
created_at DATE DEFAULT SYSDATE
|
|
188
|
+
);
|
|
189
|
+
|
|
190
|
+
CREATE INDEX idx_category ON column_index_table (category);
|
|
191
|
+
CREATE INDEX idx_status ON column_index_table (status);
|
|
192
|
+
CREATE INDEX idx_created_at ON column_index_table (created_at);
|
|
193
|
+
|
|
194
|
+
-- ============================================================================
|
|
195
|
+
-- CASE 17: ALTER TABLE to ADD PRIMARY KEY
|
|
196
|
+
-- ============================================================================
|
|
197
|
+
CREATE TABLE alter_add_pk (
|
|
198
|
+
id NUMBER NOT NULL,
|
|
199
|
+
name VARCHAR2(100)
|
|
200
|
+
);
|
|
201
|
+
|
|
202
|
+
ALTER TABLE alter_add_pk ADD CONSTRAINT pk_alter_pk PRIMARY KEY (id);
|
|
203
|
+
|
|
204
|
+
-- ============================================================================
|
|
205
|
+
-- CASE 18: ALTER TABLE to ADD FOREIGN KEY (non-self-ref)
|
|
206
|
+
-- ============================================================================
|
|
207
|
+
CREATE TABLE alter_fk_parent (
|
|
208
|
+
id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
209
|
+
name VARCHAR2(100)
|
|
210
|
+
);
|
|
211
|
+
|
|
212
|
+
CREATE TABLE alter_fk_child (
|
|
213
|
+
id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
214
|
+
parent_id NUMBER
|
|
215
|
+
);
|
|
216
|
+
|
|
217
|
+
ALTER TABLE alter_fk_child ADD CONSTRAINT fk_alter_parent
|
|
218
|
+
FOREIGN KEY (parent_id) REFERENCES alter_fk_parent(id) ON DELETE CASCADE;
|
|
219
|
+
|
|
220
|
+
-- ============================================================================
|
|
221
|
+
-- CASE 19: ALTER TABLE to ADD SELF-REFERENCING FOREIGN KEY
|
|
222
|
+
-- ============================================================================
|
|
223
|
+
CREATE TABLE alter_self_ref (
|
|
224
|
+
id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
225
|
+
parent_id NUMBER,
|
|
226
|
+
name VARCHAR2(100)
|
|
227
|
+
);
|
|
228
|
+
|
|
229
|
+
ALTER TABLE alter_self_ref ADD CONSTRAINT fk_alter_self
|
|
230
|
+
FOREIGN KEY (parent_id) REFERENCES alter_self_ref(id) ON DELETE SET NULL;
|
|
231
|
+
|
|
232
|
+
-- ============================================================================
|
|
233
|
+
-- CASE 20: ALTER TABLE to ADD CHECK CONSTRAINT
|
|
234
|
+
-- ============================================================================
|
|
235
|
+
CREATE TABLE alter_add_check (
|
|
236
|
+
id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
237
|
+
age NUMBER,
|
|
238
|
+
salary NUMBER(10, 2),
|
|
239
|
+
status VARCHAR2(20)
|
|
240
|
+
);
|
|
241
|
+
|
|
242
|
+
ALTER TABLE alter_add_check ADD CONSTRAINT chk_alter_age CHECK (age >= 18);
|
|
243
|
+
ALTER TABLE alter_add_check ADD CONSTRAINT chk_alter_salary CHECK (salary > 0);
|
|
244
|
+
ALTER TABLE alter_add_check ADD CONSTRAINT chk_alter_status CHECK (status IN ('A', 'B', 'C'));
|
|
245
|
+
|
|
246
|
+
-- ============================================================================
|
|
247
|
+
-- CASE 21: ALTER TABLE to ADD UNIQUE CONSTRAINT
|
|
248
|
+
-- ============================================================================
|
|
249
|
+
CREATE TABLE alter_add_unique (
|
|
250
|
+
id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
251
|
+
email VARCHAR2(100),
|
|
252
|
+
code VARCHAR2(20)
|
|
253
|
+
);
|
|
254
|
+
|
|
255
|
+
ALTER TABLE alter_add_unique ADD CONSTRAINT uq_alter_email UNIQUE (email);
|
|
256
|
+
ALTER TABLE alter_add_unique ADD CONSTRAINT uq_alter_code UNIQUE (code);
|
|
257
|
+
|
|
258
|
+
-- ============================================================================
|
|
259
|
+
-- CASE 22: ALTER TABLE to ADD COMPOSITE PRIMARY KEY
|
|
260
|
+
-- ============================================================================
|
|
261
|
+
CREATE TABLE alter_composite_pk (
|
|
262
|
+
region_id NUMBER NOT NULL,
|
|
263
|
+
product_id NUMBER NOT NULL,
|
|
264
|
+
quantity NUMBER
|
|
265
|
+
);
|
|
266
|
+
|
|
267
|
+
ALTER TABLE alter_composite_pk ADD CONSTRAINT pk_alter_composite PRIMARY KEY (region_id, product_id);
|
|
268
|
+
|
|
269
|
+
-- ============================================================================
|
|
270
|
+
-- CASE 23: ALTER TABLE to ADD COMPOSITE FOREIGN KEY
|
|
271
|
+
-- ============================================================================
|
|
272
|
+
CREATE TABLE alter_composite_fk_parent (
|
|
273
|
+
dept_id NUMBER NOT NULL,
|
|
274
|
+
emp_id NUMBER NOT NULL,
|
|
275
|
+
name VARCHAR2(100),
|
|
276
|
+
CONSTRAINT pk_alter_comp_parent PRIMARY KEY (dept_id, emp_id)
|
|
277
|
+
);
|
|
278
|
+
|
|
279
|
+
CREATE TABLE alter_composite_fk_child (
|
|
280
|
+
id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
281
|
+
ref_dept_id NUMBER,
|
|
282
|
+
ref_emp_id NUMBER
|
|
283
|
+
);
|
|
284
|
+
|
|
285
|
+
ALTER TABLE alter_composite_fk_child ADD CONSTRAINT fk_alter_composite
|
|
286
|
+
FOREIGN KEY (ref_dept_id, ref_emp_id) REFERENCES alter_composite_fk_parent(dept_id, emp_id);
|
|
287
|
+
|
|
288
|
+
-- ============================================================================
|
|
289
|
+
-- CASE 24: ALTER TABLE to ADD COMPOSITE UNIQUE
|
|
290
|
+
-- ============================================================================
|
|
291
|
+
CREATE TABLE alter_composite_unique (
|
|
292
|
+
id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
293
|
+
first_name VARCHAR2(50),
|
|
294
|
+
last_name VARCHAR2(50)
|
|
295
|
+
);
|
|
296
|
+
|
|
297
|
+
ALTER TABLE alter_composite_unique ADD CONSTRAINT uq_alter_fullname UNIQUE (first_name, last_name);
|
|
298
|
+
|
|
299
|
+
-- ============================================================================
|
|
300
|
+
-- CASE 25: ALTER TABLE ADD COLUMN
|
|
301
|
+
-- ============================================================================
|
|
302
|
+
CREATE TABLE alter_add_column (
|
|
303
|
+
id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
304
|
+
name VARCHAR2(100)
|
|
305
|
+
);
|
|
306
|
+
|
|
307
|
+
ALTER TABLE alter_add_column ADD new_col VARCHAR2(50);
|
|
308
|
+
ALTER TABLE alter_add_column ADD another_col NUMBER DEFAULT 0;
|
|
309
|
+
ALTER TABLE alter_add_column ADD date_col DATE DEFAULT SYSDATE;
|
|
310
|
+
|
|
311
|
+
-- ============================================================================
|
|
312
|
+
-- CASE 26: INDEX - BTREE (default in Oracle)
|
|
313
|
+
-- ============================================================================
|
|
314
|
+
CREATE TABLE idx_btree_table (
|
|
315
|
+
id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
316
|
+
code VARCHAR2(20),
|
|
317
|
+
category VARCHAR2(50)
|
|
318
|
+
);
|
|
319
|
+
|
|
320
|
+
CREATE INDEX idx_btree_code ON idx_btree_table (code);
|
|
321
|
+
|
|
322
|
+
-- ============================================================================
|
|
323
|
+
-- CASE 27: INDEX - BITMAP
|
|
324
|
+
-- ============================================================================
|
|
325
|
+
CREATE TABLE idx_bitmap_table (
|
|
326
|
+
id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
327
|
+
gender VARCHAR2(10),
|
|
328
|
+
status VARCHAR2(20)
|
|
329
|
+
);
|
|
330
|
+
|
|
331
|
+
CREATE BITMAP INDEX idx_bitmap_gender ON idx_bitmap_table (gender);
|
|
332
|
+
CREATE BITMAP INDEX idx_bitmap_status ON idx_bitmap_table (status);
|
|
333
|
+
|
|
334
|
+
-- ============================================================================
|
|
335
|
+
-- CASE 28: INDEX - UNIQUE
|
|
336
|
+
-- ============================================================================
|
|
337
|
+
CREATE TABLE idx_unique_table (
|
|
338
|
+
id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
339
|
+
email VARCHAR2(100),
|
|
340
|
+
ssn VARCHAR2(20)
|
|
341
|
+
);
|
|
342
|
+
|
|
343
|
+
CREATE UNIQUE INDEX idx_unique_email ON idx_unique_table (email);
|
|
344
|
+
CREATE UNIQUE INDEX idx_unique_ssn ON idx_unique_table (ssn);
|
|
345
|
+
|
|
346
|
+
-- ============================================================================
|
|
347
|
+
-- CASE 29: INDEX - COMPOSITE
|
|
348
|
+
-- ============================================================================
|
|
349
|
+
CREATE TABLE idx_composite_only (
|
|
350
|
+
id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
351
|
+
col1 VARCHAR2(50),
|
|
352
|
+
col2 VARCHAR2(50),
|
|
353
|
+
col3 VARCHAR2(50)
|
|
354
|
+
);
|
|
355
|
+
|
|
356
|
+
CREATE INDEX idx_comp_12 ON idx_composite_only (col1, col2);
|
|
357
|
+
CREATE INDEX idx_comp_23 ON idx_composite_only (col2, col3);
|
|
358
|
+
CREATE INDEX idx_comp_123 ON idx_composite_only (col1, col2, col3);
|
|
359
|
+
|
|
360
|
+
-- ============================================================================
|
|
361
|
+
-- CASE 30: INDEX - FUNCTIONAL (via ALTER/separate CREATE)
|
|
362
|
+
-- ============================================================================
|
|
363
|
+
CREATE TABLE idx_functional_only (
|
|
364
|
+
id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
365
|
+
full_name VARCHAR2(100),
|
|
366
|
+
description VARCHAR2(500)
|
|
367
|
+
);
|
|
368
|
+
|
|
369
|
+
CREATE INDEX idx_func_lower_name ON idx_functional_only (LOWER(full_name));
|
|
370
|
+
CREATE INDEX idx_func_substr ON idx_functional_only (SUBSTR(description, 1, 100));
|
|
371
|
+
|
|
372
|
+
-- ============================================================================
|
|
373
|
+
-- CASE 31: ADD REFS (SIMPLE) - via ALTER TABLE
|
|
374
|
+
-- ============================================================================
|
|
375
|
+
CREATE TABLE ref_simple_parent (
|
|
376
|
+
id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
377
|
+
name VARCHAR2(100)
|
|
378
|
+
);
|
|
379
|
+
|
|
380
|
+
CREATE TABLE ref_simple_child (
|
|
381
|
+
id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
382
|
+
parent_id NUMBER
|
|
383
|
+
);
|
|
384
|
+
|
|
385
|
+
ALTER TABLE ref_simple_child ADD CONSTRAINT fk_ref_simple
|
|
386
|
+
FOREIGN KEY (parent_id) REFERENCES ref_simple_parent(id);
|
|
387
|
+
|
|
388
|
+
-- ============================================================================
|
|
389
|
+
-- CASE 32: ADD REFS (COMPOSITE) - via ALTER TABLE
|
|
390
|
+
-- ============================================================================
|
|
391
|
+
CREATE TABLE ref_composite_parent (
|
|
392
|
+
key1 NUMBER NOT NULL,
|
|
393
|
+
key2 NUMBER NOT NULL,
|
|
394
|
+
data VARCHAR2(100),
|
|
395
|
+
CONSTRAINT pk_ref_comp_parent PRIMARY KEY (key1, key2)
|
|
396
|
+
);
|
|
397
|
+
|
|
398
|
+
CREATE TABLE ref_composite_child (
|
|
399
|
+
id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
400
|
+
fk1 NUMBER,
|
|
401
|
+
fk2 NUMBER
|
|
402
|
+
);
|
|
403
|
+
|
|
404
|
+
ALTER TABLE ref_composite_child ADD CONSTRAINT fk_ref_composite
|
|
405
|
+
FOREIGN KEY (fk1, fk2) REFERENCES ref_composite_parent(key1, key2);
|
|
406
|
+
|
|
407
|
+
-- ============================================================================
|
|
408
|
+
-- CASE 33: Various Oracle data types
|
|
409
|
+
-- ============================================================================
|
|
410
|
+
CREATE TABLE oracle_data_types (
|
|
411
|
+
id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
412
|
+
-- Character types
|
|
413
|
+
char_col CHAR(10),
|
|
414
|
+
varchar2_col VARCHAR2(100),
|
|
415
|
+
nchar_col NCHAR(10),
|
|
416
|
+
nvarchar2_col NVARCHAR2(100),
|
|
417
|
+
-- Number types
|
|
418
|
+
number_col NUMBER,
|
|
419
|
+
number_precision NUMBER(10),
|
|
420
|
+
number_scale NUMBER(10, 2),
|
|
421
|
+
binary_float_col BINARY_FLOAT,
|
|
422
|
+
binary_double_col BINARY_DOUBLE,
|
|
423
|
+
-- Date/Time types
|
|
424
|
+
date_col DATE,
|
|
425
|
+
timestamp_col TIMESTAMP,
|
|
426
|
+
timestamp_tz TIMESTAMP WITH TIME ZONE,
|
|
427
|
+
timestamp_ltz TIMESTAMP WITH LOCAL TIME ZONE,
|
|
428
|
+
interval_ym INTERVAL YEAR TO MONTH,
|
|
429
|
+
interval_ds INTERVAL DAY TO SECOND,
|
|
430
|
+
-- Large object types
|
|
431
|
+
clob_col CLOB,
|
|
432
|
+
nclob_col NCLOB,
|
|
433
|
+
blob_col BLOB,
|
|
434
|
+
-- Raw type
|
|
435
|
+
raw_col RAW(100),
|
|
436
|
+
-- ROWID
|
|
437
|
+
rowid_col ROWID
|
|
438
|
+
);
|
|
439
|
+
|
|
440
|
+
-- ============================================================================
|
|
441
|
+
-- CASE 34: Table with comments
|
|
442
|
+
-- ============================================================================
|
|
443
|
+
CREATE TABLE table_with_comments (
|
|
444
|
+
id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
445
|
+
name VARCHAR2(100) NOT NULL,
|
|
446
|
+
description VARCHAR2(500)
|
|
447
|
+
);
|
|
448
|
+
|
|
449
|
+
COMMENT ON TABLE table_with_comments IS 'This table''
|
|
450
|
+
stores items with descriptions';
|
|
451
|
+
COMMENT ON COLUMN table_with_comments.id IS 'Unique
|
|
452
|
+
identifier';
|
|
453
|
+
COMMENT ON COLUMN table_with_comments.name IS '!@#$%^&*()[]"Item name - required field';
|
|
454
|
+
COMMENT ON COLUMN table_with_comments.description IS 'Optional description of the item';
|
|
455
|
+
|
|
456
|
+
-- ============================================================================
|
|
457
|
+
-- CASE 35: Composite self-ref FK added via ALTER
|
|
458
|
+
-- ============================================================================
|
|
459
|
+
CREATE TABLE alter_comp_self_ref (
|
|
460
|
+
dept_id NUMBER NOT NULL,
|
|
461
|
+
emp_id NUMBER NOT NULL,
|
|
462
|
+
parent_dept_id NUMBER,
|
|
463
|
+
parent_emp_id NUMBER,
|
|
464
|
+
name VARCHAR2(100),
|
|
465
|
+
CONSTRAINT pk_alter_comp_self PRIMARY KEY (dept_id, emp_id)
|
|
466
|
+
);
|
|
467
|
+
|
|
468
|
+
ALTER TABLE alter_comp_self_ref ADD CONSTRAINT fk_alter_comp_self
|
|
469
|
+
FOREIGN KEY (parent_dept_id, parent_emp_id) REFERENCES alter_comp_self_ref(dept_id, emp_id);
|
|
470
|
+
|
|
471
|
+
-- ============================================================================
|
|
472
|
+
-- CASE 36: Special data types with precision
|
|
473
|
+
-- ============================================================================
|
|
474
|
+
CREATE TABLE special_data_types (
|
|
475
|
+
id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
476
|
+
-- Timestamp with various precisions
|
|
477
|
+
ts_default TIMESTAMP,
|
|
478
|
+
ts_0 TIMESTAMP(0),
|
|
479
|
+
ts_3 TIMESTAMP(3),
|
|
480
|
+
ts_6 TIMESTAMP(6),
|
|
481
|
+
ts_9 TIMESTAMP(9),
|
|
482
|
+
-- Timestamp with time zone with various precisions
|
|
483
|
+
ts_tz_default TIMESTAMP WITH TIME ZONE,
|
|
484
|
+
ts_tz_0 TIMESTAMP(0) WITH TIME ZONE,
|
|
485
|
+
ts_tz_3 TIMESTAMP(3) WITH TIME ZONE,
|
|
486
|
+
ts_tz_6 TIMESTAMP(6) WITH TIME ZONE,
|
|
487
|
+
ts_tz_9 TIMESTAMP(9) WITH TIME ZONE,
|
|
488
|
+
-- Timestamp with local time zone with various precisions
|
|
489
|
+
ts_ltz_default TIMESTAMP WITH LOCAL TIME ZONE,
|
|
490
|
+
ts_ltz_0 TIMESTAMP(0) WITH LOCAL TIME ZONE,
|
|
491
|
+
ts_ltz_3 TIMESTAMP(3) WITH LOCAL TIME ZONE,
|
|
492
|
+
ts_ltz_6 TIMESTAMP(6) WITH LOCAL TIME ZONE,
|
|
493
|
+
ts_ltz_9 TIMESTAMP(9) WITH LOCAL TIME ZONE,
|
|
494
|
+
-- Interval year to month with various precisions
|
|
495
|
+
iym_default INTERVAL YEAR TO MONTH,
|
|
496
|
+
iym_2 INTERVAL YEAR(2) TO MONTH,
|
|
497
|
+
iym_4 INTERVAL YEAR(4) TO MONTH,
|
|
498
|
+
iym_9 INTERVAL YEAR(9) TO MONTH,
|
|
499
|
+
-- Interval day to second with various precisions
|
|
500
|
+
ids_default INTERVAL DAY TO SECOND,
|
|
501
|
+
ids_day_4 INTERVAL DAY(4) TO SECOND,
|
|
502
|
+
ids_sec_3 INTERVAL DAY TO SECOND(3),
|
|
503
|
+
ids_both INTERVAL DAY(5) TO SECOND(4),
|
|
504
|
+
-- Float with various precisions
|
|
505
|
+
float_default FLOAT,
|
|
506
|
+
float_1 FLOAT(1),
|
|
507
|
+
float_63 FLOAT(63),
|
|
508
|
+
float_126 FLOAT(126),
|
|
509
|
+
-- Number with various precisions and scales
|
|
510
|
+
num_default NUMBER,
|
|
511
|
+
num_p NUMBER(5),
|
|
512
|
+
num_ps NUMBER(10, 2),
|
|
513
|
+
num_p_neg_s NUMBER(10, -2),
|
|
514
|
+
-- Character types with sizes
|
|
515
|
+
char_default CHAR,
|
|
516
|
+
char_sized CHAR(50),
|
|
517
|
+
varchar2_sized VARCHAR2(255),
|
|
518
|
+
nchar_default NCHAR,
|
|
519
|
+
nchar_sized NCHAR(50),
|
|
520
|
+
nvarchar2_sized NVARCHAR2(255),
|
|
521
|
+
-- Raw with size
|
|
522
|
+
raw_sized RAW(200),
|
|
523
|
+
-- UROWID with size
|
|
524
|
+
urowid_default UROWID,
|
|
525
|
+
urowid_sized UROWID(100)
|
|
526
|
+
);
|
|
527
|
+
|
|
528
|
+
EXIT;
|
|
529
|
+
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
2025-11-06T03:16:08.692Z
|
|
2
|
+
Error: PostgreSQL connection error: AggregateError
|
|
3
|
+
at getValidatedClient (/home/huydna/projects/dbml-release/packages/dbml-connector/dist/connectors/postgresConnector.js:20:19)
|
|
4
|
+
at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
|
|
5
|
+
at async fetchSchemaJson (/home/huydna/projects/dbml-release/packages/dbml-connector/dist/connectors/postgresConnector.js:481:20)
|
|
6
|
+
at async connectionHandler (/home/huydna/projects/dbml-release/packages/dbml-cli/lib/cli/connector.js:24:24)
|
|
7
|
+
|
|
8
|
+
2025-11-18T08:13:12.163Z
|
|
9
|
+
Error: PostgreSQL connection error: AggregateError
|
|
10
|
+
at getValidatedClient (/home/huydna/projects/dbml-release/packages/dbml-connector/dist/connectors/postgresConnector.js:20:19)
|
|
11
|
+
at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
|
|
12
|
+
at async fetchSchemaJson (/home/huydna/projects/dbml-release/packages/dbml-connector/dist/connectors/postgresConnector.js:485:20)
|
|
13
|
+
at async connectionHandler (/home/huydna/projects/dbml-release/packages/dbml-cli/lib/cli/connector.js:24:24)
|
|
14
|
+
|
|
15
|
+
2025-11-18T09:04:37.202Z
|
|
16
|
+
Error: PostgreSQL connection error: AggregateError
|
|
17
|
+
at getValidatedClient (/home/huydna/projects/dbml-release/packages/dbml-connector/dist/connectors/postgresConnector.js:20:19)
|
|
18
|
+
at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
|
|
19
|
+
at async fetchSchemaJson (/home/huydna/projects/dbml-release/packages/dbml-connector/dist/connectors/postgresConnector.js:485:20)
|
|
20
|
+
at async connectionHandler (/home/huydna/projects/dbml-release/packages/dbml-cli/lib/cli/connector.js:24:24)
|
|
21
|
+
|
|
22
|
+
2025-11-27T14:15:15.990Z
|
|
23
|
+
Error: PostgreSQL connection error: AggregateError
|
|
24
|
+
at getValidatedClient (/home/huydna/projects/dbml-release/packages/dbml-connector/dist/connectors/postgres/index.js:20:19)
|
|
25
|
+
at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
|
|
26
|
+
at async fetchSchemaJson (/home/huydna/projects/dbml-release/packages/dbml-connector/dist/connectors/postgres/index.js:487:20)
|
|
27
|
+
at async connectionHandler (/home/huydna/projects/dbml-release/packages/dbml-cli/lib/cli/connector.js:25:24)
|
|
28
|
+
|
|
@@ -96,7 +96,7 @@ Table "order_items" {
|
|
|
96
96
|
"unit_price" numeric(10,2) [not null, check: `unit_price > (0)::numeric`]
|
|
97
97
|
|
|
98
98
|
Indexes {
|
|
99
|
-
(order_id, product_id) [type: btree, name: "uq_order_product"]
|
|
99
|
+
(order_id, product_id) [type: btree, unique, name: "uq_order_product"]
|
|
100
100
|
(order_id, product_id) [type: btree, name: "idx_order_items_order_product"]
|
|
101
101
|
}
|
|
102
102
|
}
|
|
@@ -153,7 +153,7 @@ Table "authors" {
|
|
|
153
153
|
"birthyear" int4
|
|
154
154
|
|
|
155
155
|
Indexes {
|
|
156
|
-
(authorid, nationalityid) [type: btree, name: "authors_pkey"]
|
|
156
|
+
(authorid, nationalityid) [pk, type: btree, name: "authors_pkey"]
|
|
157
157
|
}
|
|
158
158
|
}
|
|
159
159
|
|
|
@@ -175,6 +175,18 @@ Table "table2" {
|
|
|
175
175
|
"status" enum_type2
|
|
176
176
|
}
|
|
177
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
|
+
|
|
178
190
|
Ref "fk_authornationality":"authors".("authorid", "nationalityid") < "books".("authorid", "nationalityid") [delete: cascade]
|
|
179
191
|
|
|
180
192
|
Ref "fk_order":"orders"."order_id" < "order_items"."order_id" [delete: cascade]
|
|
@@ -186,3 +186,13 @@ CREATE TABLE dbml_test.table3 (
|
|
|
186
186
|
id SERIAL PRIMARY KEY,
|
|
187
187
|
status dbml_test.enum_type3
|
|
188
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
|
+
);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
✔ Generated DBML file from database's connection: schema.dbml
|
|
File without changes
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
-- SQL dump generated using DBML (dbml.dbdiagram.io)
|
|
2
|
+
-- Database: MySQL
|
|
3
|
+
-- Generated at: 2025-11-27T14:14:10.059Z
|
|
4
|
+
|
|
5
|
+
CREATE TABLE `orders` (
|
|
6
|
+
`id` int PRIMARY KEY AUTO_INCREMENT,
|
|
7
|
+
`user_id` int UNIQUE NOT NULL,
|
|
8
|
+
`status` ENUM ('created', 'running', 'done', 'failure'),
|
|
9
|
+
`created_at` varchar(255)
|
|
10
|
+
);
|
|
11
|
+
|
|
12
|
+
CREATE TABLE `order_items` (
|
|
13
|
+
`order_id` int,
|
|
14
|
+
`product_id` int,
|
|
15
|
+
`quantity` int DEFAULT 1
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
CREATE TABLE `products` (
|
|
19
|
+
`id` int PRIMARY KEY,
|
|
20
|
+
`name` varchar(255),
|
|
21
|
+
`merchant_id` int NOT NULL,
|
|
22
|
+
`price` int,
|
|
23
|
+
`status` ENUM ('Out of Stock', 'In Stock'),
|
|
24
|
+
`created_at` datetime DEFAULT (now())
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
CREATE TABLE `users` (
|
|
28
|
+
`id` int PRIMARY KEY,
|
|
29
|
+
`full_name` varchar(255),
|
|
30
|
+
`email` varchar(255) UNIQUE,
|
|
31
|
+
`gender` varchar(255),
|
|
32
|
+
`date_of_birth` varchar(255),
|
|
33
|
+
`created_at` varchar(255),
|
|
34
|
+
`country_code` int
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
CREATE TABLE `merchants` (
|
|
38
|
+
`id` int PRIMARY KEY,
|
|
39
|
+
`merchant_name` varchar(255),
|
|
40
|
+
`country_code` int,
|
|
41
|
+
`created_at` varchar(255),
|
|
42
|
+
`admin_id` int
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
CREATE TABLE `countries` (
|
|
46
|
+
`code` int PRIMARY KEY,
|
|
47
|
+
`name` varchar(255),
|
|
48
|
+
`continent_name` varchar(255)
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
CREATE INDEX `product_status` ON `products` (`merchant_id`, `status`);
|
|
52
|
+
|
|
53
|
+
CREATE UNIQUE INDEX `products_index_1` ON `products` (`id`) USING HASH;
|
|
54
|
+
|
|
55
|
+
ALTER TABLE `order_items` ADD FOREIGN KEY (`order_id`) REFERENCES `orders` (`id`);
|
|
56
|
+
|
|
57
|
+
ALTER TABLE `order_items` ADD FOREIGN KEY (`product_id`) REFERENCES `products` (`id`);
|
|
58
|
+
|
|
59
|
+
ALTER TABLE `users` ADD FOREIGN KEY (`country_code`) REFERENCES `countries` (`code`);
|
|
60
|
+
|
|
61
|
+
ALTER TABLE `merchants` ADD FOREIGN KEY (`country_code`) REFERENCES `countries` (`code`);
|
|
62
|
+
|
|
63
|
+
ALTER TABLE `products` ADD FOREIGN KEY (`merchant_id`) REFERENCES `merchants` (`id`);
|
|
64
|
+
|
|
65
|
+
ALTER TABLE `merchants` ADD FOREIGN KEY (`admin_id`) REFERENCES `users` (`id`);
|
|
File without changes
|
|
File without changes
|