@dbml/cli 3.6.2 → 3.7.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 +0 -0
- package/LICENSE +0 -0
- package/README.md +0 -0
- package/__test__/cli.test.js +7 -1
- package/__test__/db2dbml/mssql/dbml-error.log +467 -0
- package/__test__/db2dbml/mssql/expect-out-files/schema.dbml +190 -0
- package/__test__/db2dbml/mssql/options.json +8 -0
- package/__test__/db2dbml/mssql/schema.sql +296 -0
- package/__test__/db2dbml/mssql/stdout.txt +1 -0
- package/__test__/db2dbml/mysql/dbml-error.log +281 -0
- package/__test__/db2dbml/mysql/expect-out-files/schema.dbml +180 -0
- package/__test__/db2dbml/mysql/options.json +8 -0
- package/__test__/db2dbml/mysql/out-files/schema.dbml +180 -0
- package/__test__/db2dbml/mysql/schema.sql +141 -0
- package/__test__/db2dbml/mysql/stdout.txt +1 -0
- package/__test__/db2dbml/postgres/dbml-error.log +252 -0
- package/__test__/db2dbml/postgres/expect-out-files/schema.dbml +140 -0
- package/__test__/db2dbml/postgres/options.json +8 -0
- package/__test__/db2dbml/postgres/out-files/schema.dbml +140 -0
- package/__test__/db2dbml/postgres/schema.sql +156 -0
- package/__test__/db2dbml/postgres/stdout.txt +1 -0
- package/__test__/db2dbml_bin.js +5 -0
- package/__test__/dbml2sql/filename --mysql --out-file/dbml-error.log +0 -36
- package/__test__/dbml2sql/filename --mysql --out-file/expect-out-files/schema.sql +0 -0
- package/__test__/dbml2sql/filename --mysql --out-file/in-files/schema.dbml +0 -0
- package/__test__/dbml2sql/filename --mysql --out-file/options.json +0 -0
- package/__test__/dbml2sql/filename --mysql --out-file/out-files/schema.sql +1 -1
- package/__test__/dbml2sql/filename --mysql --out-file/stdout.txt +0 -0
- package/__test__/dbml2sql/filename --mysql stdout/dbml-error.log +0 -0
- package/__test__/dbml2sql/filename --mysql stdout/in-files/schema.dbml +0 -0
- package/__test__/dbml2sql/filename --mysql stdout/options.json +0 -0
- package/__test__/dbml2sql/filename --mysql stdout/stdout.txt +0 -0
- package/__test__/dbml2sql/filename --oracle --out-file/dbml-error.log +0 -0
- package/__test__/dbml2sql/filename --oracle --out-file/expect-out-files/schema.sql +0 -0
- package/__test__/dbml2sql/filename --oracle --out-file/in-files/schema.dbml +0 -0
- package/__test__/dbml2sql/filename --oracle --out-file/options.json +0 -0
- package/__test__/dbml2sql/filename --oracle --out-file/out-files/schema.sql +1 -1
- package/__test__/dbml2sql/filename --oracle --out-file/stdout.txt +0 -0
- package/__test__/dbml2sql/filename --oracle stdout/dbml-error.log +0 -0
- package/__test__/dbml2sql/filename --oracle stdout/in-files/schema.dbml +0 -0
- package/__test__/dbml2sql/filename --oracle stdout/options.json +0 -0
- package/__test__/dbml2sql/filename --oracle stdout/stdout.txt +0 -0
- package/__test__/dbml2sql/filename --out-file/dbml-error.log +0 -36
- package/__test__/dbml2sql/filename --out-file/expect-out-files/schema.sql +0 -0
- package/__test__/dbml2sql/filename --out-file/in-files/schema.dbml +0 -0
- package/__test__/dbml2sql/filename --out-file/options.json +0 -0
- package/__test__/dbml2sql/filename --out-file/out-files/schema.sql +1 -1
- package/__test__/dbml2sql/filename --out-file/stdout.txt +0 -0
- package/__test__/dbml2sql/filename --postgres --out-file/dbml-error.log +0 -24
- package/__test__/dbml2sql/filename --postgres --out-file/expect-out-files/schema.sql +0 -0
- package/__test__/dbml2sql/filename --postgres --out-file/in-files/schema.dbml +0 -0
- package/__test__/dbml2sql/filename --postgres --out-file/options.json +0 -0
- package/__test__/dbml2sql/filename --postgres --out-file/out-files/schema.sql +1 -1
- package/__test__/dbml2sql/filename --postgres --out-file/stdout.txt +0 -0
- package/__test__/dbml2sql/filename --postgres stdout/dbml-error.log +0 -0
- package/__test__/dbml2sql/filename --postgres stdout/in-files/schema.dbml +0 -0
- package/__test__/dbml2sql/filename --postgres stdout/options.json +0 -0
- package/__test__/dbml2sql/filename --postgres stdout/stdout.txt +0 -0
- package/__test__/dbml2sql/filename stdout/dbml-error.log +0 -0
- package/__test__/dbml2sql/filename stdout/in-files/schema.dbml +0 -0
- package/__test__/dbml2sql/filename stdout/options.json +0 -0
- package/__test__/dbml2sql/filename stdout/stdout.txt +0 -0
- package/__test__/dbml2sql/filenames --mysql --out-file/dbml-error.log +0 -24
- package/__test__/dbml2sql/filenames --mysql --out-file/expect-out-files/schema.sql +0 -0
- package/__test__/dbml2sql/filenames --mysql --out-file/in-files/business.dbml +0 -0
- package/__test__/dbml2sql/filenames --mysql --out-file/in-files/customer.dbml +0 -0
- package/__test__/dbml2sql/filenames --mysql --out-file/in-files/inventory.dbml +0 -0
- package/__test__/dbml2sql/filenames --mysql --out-file/options.json +0 -0
- package/__test__/dbml2sql/filenames --mysql --out-file/out-files/schema.sql +1 -1
- package/__test__/dbml2sql/filenames --mysql --out-file/stdout.txt +0 -0
- package/__test__/dbml2sql/filenames --mysql stdout/dbml-error.log +0 -0
- package/__test__/dbml2sql/filenames --mysql stdout/in-files/business.dbml +0 -0
- package/__test__/dbml2sql/filenames --mysql stdout/in-files/customer.dbml +0 -0
- package/__test__/dbml2sql/filenames --mysql stdout/in-files/inventory.dbml +0 -0
- package/__test__/dbml2sql/filenames --mysql stdout/options.json +0 -0
- package/__test__/dbml2sql/filenames --mysql stdout/stdout.txt +0 -0
- package/__test__/dbml2sql/filenames --oracle --out-file/dbml-error.log +0 -0
- package/__test__/dbml2sql/filenames --oracle --out-file/expect-out-files/schema.sql +0 -0
- package/__test__/dbml2sql/filenames --oracle --out-file/in-files/business.dbml +0 -0
- package/__test__/dbml2sql/filenames --oracle --out-file/in-files/customer.dbml +0 -0
- package/__test__/dbml2sql/filenames --oracle --out-file/in-files/inventory.dbml +0 -0
- package/__test__/dbml2sql/filenames --oracle --out-file/options.json +0 -0
- package/__test__/dbml2sql/filenames --oracle --out-file/out-files/schema.sql +1 -1
- package/__test__/dbml2sql/filenames --oracle --out-file/stdout.txt +0 -0
- package/__test__/dbml2sql/filenames --oracle stdout/dbml-error.log +0 -0
- package/__test__/dbml2sql/filenames --oracle stdout/in-files/business.dbml +0 -0
- package/__test__/dbml2sql/filenames --oracle stdout/in-files/customer.dbml +0 -0
- package/__test__/dbml2sql/filenames --oracle stdout/in-files/inventory.dbml +0 -0
- package/__test__/dbml2sql/filenames --oracle stdout/options.json +0 -0
- package/__test__/dbml2sql/filenames --oracle stdout/stdout.txt +0 -0
- package/__test__/dbml2sql/filenames --out-file/dbml-error.log +0 -24
- package/__test__/dbml2sql/filenames --out-file/expect-out-files/schema.sql +0 -0
- package/__test__/dbml2sql/filenames --out-file/in-files/business.dbml +0 -0
- package/__test__/dbml2sql/filenames --out-file/in-files/customer.dbml +0 -0
- package/__test__/dbml2sql/filenames --out-file/in-files/inventory.dbml +0 -0
- package/__test__/dbml2sql/filenames --out-file/options.json +0 -0
- package/__test__/dbml2sql/filenames --out-file/out-files/schema.sql +1 -1
- package/__test__/dbml2sql/filenames --out-file/stdout.txt +0 -0
- package/__test__/dbml2sql/filenames --postgres --out-file/dbml-error.log +0 -24
- package/__test__/dbml2sql/filenames --postgres --out-file/expect-out-files/schema.sql +0 -0
- package/__test__/dbml2sql/filenames --postgres --out-file/in-files/business.dbml +0 -0
- package/__test__/dbml2sql/filenames --postgres --out-file/in-files/customer.dbml +0 -0
- package/__test__/dbml2sql/filenames --postgres --out-file/in-files/inventory.dbml +0 -0
- package/__test__/dbml2sql/filenames --postgres --out-file/options.json +0 -0
- package/__test__/dbml2sql/filenames --postgres --out-file/out-files/schema.sql +1 -1
- package/__test__/dbml2sql/filenames --postgres --out-file/stdout.txt +0 -0
- package/__test__/dbml2sql/filenames --postgres stdout/dbml-error.log +0 -0
- package/__test__/dbml2sql/filenames --postgres stdout/in-files/business.dbml +0 -0
- package/__test__/dbml2sql/filenames --postgres stdout/in-files/customer.dbml +0 -0
- package/__test__/dbml2sql/filenames --postgres stdout/in-files/inventory.dbml +0 -0
- package/__test__/dbml2sql/filenames --postgres stdout/options.json +0 -0
- package/__test__/dbml2sql/filenames --postgres stdout/stdout.txt +0 -0
- package/__test__/dbml2sql/filenames stdout/dbml-error.log +0 -0
- package/__test__/dbml2sql/filenames stdout/in-files/business.dbml +0 -0
- package/__test__/dbml2sql/filenames stdout/in-files/customer.dbml +0 -0
- package/__test__/dbml2sql/filenames stdout/in-files/inventory.dbml +0 -0
- package/__test__/dbml2sql/filenames stdout/options.json +0 -0
- package/__test__/dbml2sql/filenames stdout/stdout.txt +0 -0
- package/__test__/dbml2sql/multiple_schema_mssql/dbml-error.log +0 -24
- package/__test__/dbml2sql/multiple_schema_mssql/expect-out-files/multiple_schema.out.sql +0 -0
- package/__test__/dbml2sql/multiple_schema_mssql/in-files/multiple_schema.in.dbml +0 -0
- package/__test__/dbml2sql/multiple_schema_mssql/options.json +0 -0
- package/__test__/dbml2sql/multiple_schema_mssql/out-files/multiple_schema.out.sql +1 -1
- package/__test__/dbml2sql/multiple_schema_mssql/stdout.txt +0 -0
- package/__test__/dbml2sql/multiple_schema_mysql/dbml-error.log +0 -24
- package/__test__/dbml2sql/multiple_schema_mysql/expect-out-files/multiple_schema.out.sql +0 -0
- package/__test__/dbml2sql/multiple_schema_mysql/in-files/multiple_schema.in.dbml +0 -0
- package/__test__/dbml2sql/multiple_schema_mysql/options.json +0 -0
- package/__test__/dbml2sql/multiple_schema_mysql/out-files/multiple_schema.out.sql +1 -1
- package/__test__/dbml2sql/multiple_schema_mysql/stdout.txt +0 -0
- package/__test__/dbml2sql/multiple_schema_oracle/dbml-error.log +0 -0
- package/__test__/dbml2sql/multiple_schema_oracle/expect-out-files/multiple_schema.out.sql +0 -0
- package/__test__/dbml2sql/multiple_schema_oracle/in-files/multiple_schema.in.dbml +0 -0
- package/__test__/dbml2sql/multiple_schema_oracle/options.json +0 -0
- package/__test__/dbml2sql/multiple_schema_oracle/out-files/multiple_schema.out.sql +1 -1
- package/__test__/dbml2sql/multiple_schema_oracle/stdout.txt +0 -0
- package/__test__/dbml2sql/multiple_schema_pg/dbml-error.log +0 -24
- package/__test__/dbml2sql/multiple_schema_pg/expect-out-files/multiple_schema.out.sql +0 -0
- package/__test__/dbml2sql/multiple_schema_pg/in-files/multiple_schema.in.dbml +0 -0
- package/__test__/dbml2sql/multiple_schema_pg/options.json +0 -0
- package/__test__/dbml2sql/multiple_schema_pg/out-files/multiple_schema.out.sql +1 -1
- package/__test__/dbml2sql/multiple_schema_pg/stdout.txt +0 -0
- package/__test__/dbml2sql/syntax-error/dbml-error.log +7 -2104
- package/__test__/dbml2sql/syntax-error/in-files/ecommerce.dbml +0 -0
- package/__test__/dbml2sql/syntax-error/options.json +0 -0
- package/__test__/dbml2sql/syntax-error/stdout.txt +0 -0
- package/__test__/dbml2sql_bin.js +0 -0
- package/__test__/sql2dbml/filename --mssql --out-file/dbml-error.log +0 -51
- package/__test__/sql2dbml/filename --mssql --out-file/expect-out-files/schema.dbml +0 -0
- package/__test__/sql2dbml/filename --mssql --out-file/in-files/schema.sql +0 -0
- package/__test__/sql2dbml/filename --mssql --out-file/options.json +0 -0
- package/__test__/sql2dbml/filename --mssql --out-file/out-files/schema.dbml +0 -0
- package/__test__/sql2dbml/filename --mssql --out-file/stdout.txt +0 -0
- package/__test__/sql2dbml/filename --mysql --out-file/dbml-error.log +0 -24
- package/__test__/sql2dbml/filename --mysql --out-file/expect-out-files/schema.dbml +0 -0
- package/__test__/sql2dbml/filename --mysql --out-file/in-files/schema.sql +0 -0
- package/__test__/sql2dbml/filename --mysql --out-file/options.json +0 -0
- package/__test__/sql2dbml/filename --mysql --out-file/out-files/schema.dbml +0 -0
- package/__test__/sql2dbml/filename --mysql --out-file/stdout.txt +0 -0
- package/__test__/sql2dbml/filename --mysql stdout/dbml-error.log +0 -0
- package/__test__/sql2dbml/filename --mysql stdout/in-files/schema.sql +0 -0
- package/__test__/sql2dbml/filename --mysql stdout/options.json +0 -0
- package/__test__/sql2dbml/filename --mysql stdout/stdout.txt +0 -0
- package/__test__/sql2dbml/filename --out-file/dbml-error.log +0 -24
- package/__test__/sql2dbml/filename --out-file/expect-out-files/schema.dbml +0 -0
- package/__test__/sql2dbml/filename --out-file/in-files/schema.sql +0 -0
- package/__test__/sql2dbml/filename --out-file/options.json +0 -0
- package/__test__/sql2dbml/filename --out-file/out-files/schema.dbml +0 -0
- package/__test__/sql2dbml/filename --out-file/stdout.txt +0 -0
- package/__test__/sql2dbml/filename --postgres --out-file/dbml-error.log +0 -24
- package/__test__/sql2dbml/filename --postgres --out-file/expect-out-files/schema.dbml +0 -0
- package/__test__/sql2dbml/filename --postgres --out-file/in-files/schema.sql +0 -0
- package/__test__/sql2dbml/filename --postgres --out-file/options.json +0 -0
- package/__test__/sql2dbml/filename --postgres --out-file/out-files/schema.dbml +0 -0
- package/__test__/sql2dbml/filename --postgres --out-file/stdout.txt +0 -0
- package/__test__/sql2dbml/filename --postgres stdout/dbml-error.log +0 -0
- package/__test__/sql2dbml/filename --postgres stdout/in-files/schema.sql +0 -0
- package/__test__/sql2dbml/filename --postgres stdout/options.json +0 -0
- package/__test__/sql2dbml/filename --postgres stdout/stdout.txt +0 -0
- package/__test__/sql2dbml/filename --snowflake stdout/dbml-error.log +0 -54
- package/__test__/sql2dbml/filename --snowflake stdout/in-files/schema.sql +0 -0
- package/__test__/sql2dbml/filename --snowflake stdout/options.json +0 -0
- package/__test__/sql2dbml/filename --snowflake stdout/stdout.txt +6 -6
- package/__test__/sql2dbml/filename stdout/dbml-error.log +0 -0
- package/__test__/sql2dbml/filename stdout/in-files/schema.sql +0 -0
- package/__test__/sql2dbml/filename stdout/options.json +0 -0
- package/__test__/sql2dbml/filename stdout/stdout.txt +0 -0
- package/__test__/sql2dbml/filenames --mysql --out-file/dbml-error.log +0 -24
- package/__test__/sql2dbml/filenames --mysql --out-file/expect-out-files/schema.dbml +0 -0
- package/__test__/sql2dbml/filenames --mysql --out-file/in-files/business.sql +0 -0
- package/__test__/sql2dbml/filenames --mysql --out-file/in-files/customer.sql +0 -0
- package/__test__/sql2dbml/filenames --mysql --out-file/in-files/inventory.sql +0 -0
- package/__test__/sql2dbml/filenames --mysql --out-file/options.json +0 -0
- package/__test__/sql2dbml/filenames --mysql --out-file/out-files/schema.dbml +0 -0
- package/__test__/sql2dbml/filenames --mysql --out-file/stdout.txt +0 -0
- package/__test__/sql2dbml/filenames --mysql stdout/dbml-error.log +0 -0
- package/__test__/sql2dbml/filenames --mysql stdout/in-files/business.sql +0 -0
- package/__test__/sql2dbml/filenames --mysql stdout/in-files/customer.sql +0 -0
- package/__test__/sql2dbml/filenames --mysql stdout/in-files/inventory.sql +0 -0
- package/__test__/sql2dbml/filenames --mysql stdout/options.json +0 -0
- package/__test__/sql2dbml/filenames --mysql stdout/stdout.txt +0 -0
- package/__test__/sql2dbml/filenames --out-file/dbml-error.log +0 -24
- package/__test__/sql2dbml/filenames --out-file/expect-out-files/schema.dbml +0 -0
- package/__test__/sql2dbml/filenames --out-file/in-files/business.sql +0 -0
- package/__test__/sql2dbml/filenames --out-file/in-files/customer.sql +0 -0
- package/__test__/sql2dbml/filenames --out-file/in-files/inventory.sql +0 -0
- package/__test__/sql2dbml/filenames --out-file/options.json +0 -0
- package/__test__/sql2dbml/filenames --out-file/out-files/schema.dbml +0 -0
- package/__test__/sql2dbml/filenames --out-file/stdout.txt +0 -0
- package/__test__/sql2dbml/filenames --postgres --out-file/dbml-error.log +0 -24
- package/__test__/sql2dbml/filenames --postgres --out-file/expect-out-files/schema.dbml +0 -0
- package/__test__/sql2dbml/filenames --postgres --out-file/in-files/business.sql +0 -0
- package/__test__/sql2dbml/filenames --postgres --out-file/in-files/customer.sql +0 -0
- package/__test__/sql2dbml/filenames --postgres --out-file/in-files/inventory.sql +0 -0
- package/__test__/sql2dbml/filenames --postgres --out-file/options.json +0 -0
- package/__test__/sql2dbml/filenames --postgres --out-file/out-files/schema.dbml +0 -0
- package/__test__/sql2dbml/filenames --postgres --out-file/stdout.txt +0 -0
- package/__test__/sql2dbml/filenames --postgres stdout/dbml-error.log +0 -0
- package/__test__/sql2dbml/filenames --postgres stdout/in-files/business.sql +0 -0
- package/__test__/sql2dbml/filenames --postgres stdout/in-files/customer.sql +0 -0
- package/__test__/sql2dbml/filenames --postgres stdout/in-files/inventory.sql +0 -0
- package/__test__/sql2dbml/filenames --postgres stdout/options.json +0 -0
- package/__test__/sql2dbml/filenames --postgres stdout/stdout.txt +0 -0
- package/__test__/sql2dbml/filenames stdout/dbml-error.log +0 -0
- package/__test__/sql2dbml/filenames stdout/in-files/business.sql +0 -0
- package/__test__/sql2dbml/filenames stdout/in-files/customer.sql +0 -0
- package/__test__/sql2dbml/filenames stdout/in-files/inventory.sql +0 -0
- package/__test__/sql2dbml/filenames stdout/options.json +0 -0
- package/__test__/sql2dbml/filenames stdout/stdout.txt +0 -0
- package/__test__/sql2dbml/multiple_schema_mssql/dbml-error.log +0 -121
- package/__test__/sql2dbml/multiple_schema_mssql/expect-out-files/multiple_schema.out.dbml +0 -0
- package/__test__/sql2dbml/multiple_schema_mssql/in-files/multiple_schema.in.sql +0 -0
- package/__test__/sql2dbml/multiple_schema_mssql/options.json +0 -0
- package/__test__/sql2dbml/multiple_schema_mssql/out-files/multiple_schema.out.dbml +0 -0
- package/__test__/sql2dbml/multiple_schema_mssql/stdout.txt +0 -0
- package/__test__/sql2dbml/multiple_schema_mysql/dbml-error.log +0 -104
- package/__test__/sql2dbml/multiple_schema_mysql/expect-out-files/multiple_schema.out.dbml +0 -0
- package/__test__/sql2dbml/multiple_schema_mysql/in-files/multiple_schema.in.sql +0 -0
- package/__test__/sql2dbml/multiple_schema_mysql/options.json +0 -0
- package/__test__/sql2dbml/multiple_schema_mysql/out-files/multiple_schema.out.dbml +0 -0
- package/__test__/sql2dbml/multiple_schema_mysql/stdout.txt +0 -0
- package/__test__/sql2dbml/multiple_schema_pg/dbml-error.log +0 -131
- package/__test__/sql2dbml/multiple_schema_pg/expect-out-files/multiple_schema.out.dbml +0 -0
- package/__test__/sql2dbml/multiple_schema_pg/in-files/multiple_schema.in.sql +0 -0
- package/__test__/sql2dbml/multiple_schema_pg/options.json +0 -0
- package/__test__/sql2dbml/multiple_schema_pg/out-files/multiple_schema.out.dbml +0 -0
- package/__test__/sql2dbml/multiple_schema_pg/stdout.txt +0 -0
- package/__test__/sql2dbml/syntax-error/dbml-error.log +7 -2077
- package/__test__/sql2dbml/syntax-error/in-files/business.sql +0 -0
- package/__test__/sql2dbml/syntax-error/options.json +0 -0
- package/__test__/sql2dbml/syntax-error/stdout.txt +0 -0
- package/__test__/sql2dbml/syntax-error-duplicate-endpoints --mssql/dbml-error.log +9 -27
- package/__test__/sql2dbml/syntax-error-duplicate-endpoints --mssql/in-files/schema.sql +0 -0
- package/__test__/sql2dbml/syntax-error-duplicate-endpoints --mssql/options.json +0 -0
- package/__test__/sql2dbml/syntax-error-duplicate-endpoints --mssql/stdout.txt +0 -0
- package/__test__/sql2dbml/syntax-error-duplicate-endpoints --mysql/dbml-error.log +7 -28
- package/__test__/sql2dbml/syntax-error-duplicate-endpoints --mysql/in-files/schema.sql +0 -0
- package/__test__/sql2dbml/syntax-error-duplicate-endpoints --mysql/options.json +0 -0
- package/__test__/sql2dbml/syntax-error-duplicate-endpoints --mysql/stdout.txt +0 -0
- package/__test__/sql2dbml_bin.js +0 -0
- package/bin/db2dbml.js +4 -0
- package/dbml-error.log +52 -279
- package/jestHelpers.js +0 -0
- package/lib/cli/config.js +0 -0
- package/lib/cli/connector.js +6 -7
- package/lib/cli/export.js +0 -0
- package/lib/cli/import.js +0 -0
- package/lib/cli/index.js +28 -0
- package/lib/cli/outputPlugins/outputConsolePlugin.js +0 -0
- package/lib/cli/outputPlugins/outputFilePlugin.js +0 -0
- package/lib/cli/utils.js +20 -0
- package/lib/cli/validatePlugins/validatePlugins.js +0 -0
- package/lib/connectors/Connector.js +19 -0
- package/lib/connectors/MssqlConnector.js +483 -0
- package/lib/connectors/PostgresConnector.js +450 -0
- package/lib/errors/domainError.js +0 -0
- package/lib/errors/index.js +0 -0
- package/lib/errors/syntaxError.js +0 -0
- package/lib/helpers/logger.js +0 -0
- package/lib/index.js +6 -0
- package/package.json +5 -4
- package/src/cli/config.js +0 -0
- package/src/cli/connector.js +31 -0
- package/src/cli/export.js +0 -0
- package/src/cli/import.js +0 -0
- package/src/cli/index.js +35 -0
- package/src/cli/outputPlugins/outputConsolePlugin.js +0 -0
- package/src/cli/outputPlugins/outputFilePlugin.js +0 -0
- package/src/cli/utils.js +23 -0
- package/src/cli/validatePlugins/validatePlugins.js +0 -0
- package/src/errors/domainError.js +0 -0
- package/src/errors/index.js +0 -0
- package/src/errors/syntaxError.js +0 -0
- package/src/helpers/logger.js +0 -0
- package/src/index.js +2 -1
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
Enum "dbo"."chk_status" {
|
|
2
|
+
"cancelled"
|
|
3
|
+
"delivered"
|
|
4
|
+
"shipped"
|
|
5
|
+
"processing"
|
|
6
|
+
"pending"
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
Enum "dbo"."chk_gender" {
|
|
10
|
+
"Other"
|
|
11
|
+
"Female"
|
|
12
|
+
"Male"
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
Table "dbo"."Authors" {
|
|
16
|
+
"AuthorID" int [pk, not null]
|
|
17
|
+
"AuthorName" nvarchar [unique]
|
|
18
|
+
"BirthYear" int [unique]
|
|
19
|
+
"NationalityID" int [pk, not null]
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
Table "dbo"."Books" {
|
|
23
|
+
"AuthorID" int [pk, not null]
|
|
24
|
+
"BookID" int [pk, not null]
|
|
25
|
+
"ISBN" nvarchar [unique]
|
|
26
|
+
"NationalityID" int
|
|
27
|
+
"Title" nvarchar
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
Table "dbo"."DatetimeTypes" {
|
|
31
|
+
"DATECol" date [default: `getdate()`]
|
|
32
|
+
"DATETIME2Col" datetime2 [default: `sysdatetime()`]
|
|
33
|
+
"DATETIMECol" datetime [default: `getdate()`]
|
|
34
|
+
"DATETIMEOFFSETCol" datetimeoffset [default: `sysdatetimeoffset()`]
|
|
35
|
+
"ID" int [pk, not null, increment]
|
|
36
|
+
"ROWVERSIONCol" timestamp [not null]
|
|
37
|
+
"SMALLDATETIMECol" smalldatetime [default: `getdate()`]
|
|
38
|
+
"TIMECol" time [default: `CONVERT([time],getdate())`]
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
Table "dbo"."gender_reference" {
|
|
42
|
+
"value" nvarchar [pk, not null]
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
Table "dbo"."NumberTypes" {
|
|
46
|
+
"BIGINTCol" bigint [default: 0]
|
|
47
|
+
"BITCol" bit [default: 0]
|
|
48
|
+
"DECIMALCol" decimal(10,2) [default: 0.00]
|
|
49
|
+
"FLOATCol" float [default: 0.0]
|
|
50
|
+
"ID" int [pk, not null, increment]
|
|
51
|
+
"INTCol" int [default: 0]
|
|
52
|
+
"NUMERICCol" numeric(10,2) [default: 0.00]
|
|
53
|
+
"REALCol" real [default: 0.0]
|
|
54
|
+
"SMALLINTCol" smallint [default: 0]
|
|
55
|
+
"TINYINTCol" tinyint [default: 0]
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
Table "dbo"."ObjectTypes" {
|
|
59
|
+
"BinaryField" binary [default: `0x00`]
|
|
60
|
+
"Id" int [pk, not null, increment]
|
|
61
|
+
"ImageField" image [default: `0x00`]
|
|
62
|
+
"JsonField" nvarchar [default: `N'{"defaultKey": "defaultValue", "status": "active", "count": 0}'`]
|
|
63
|
+
"VarBinaryField" varbinary [default: `0x00`]
|
|
64
|
+
"VarBinaryMaxField" varbinary [default: `0x00`]
|
|
65
|
+
"XmlField" xml [default: '''<Books>
|
|
66
|
+
<Book>
|
|
67
|
+
<Title>The Great Gatsby</Title>
|
|
68
|
+
<Author>F. Scott Fitzgerald</Author>
|
|
69
|
+
<Year>1925</Year>
|
|
70
|
+
<Price>10.99</Price>
|
|
71
|
+
<Publisher>Scribner</Publisher>
|
|
72
|
+
<Location>New York</Location>
|
|
73
|
+
<Genre>Fiction</Genre>
|
|
74
|
+
<Subgenre>Classic</Subgenre>
|
|
75
|
+
</Book>
|
|
76
|
+
<Book>
|
|
77
|
+
<Title>1984</Title>
|
|
78
|
+
<Author>George Orwell</Author>
|
|
79
|
+
<Year>1949</Year>
|
|
80
|
+
<Price>8.99</Price>
|
|
81
|
+
<Publisher>Secker & Warburg</Publisher>
|
|
82
|
+
<Location>London</Location>
|
|
83
|
+
<Genre>Dystopian</Genre>
|
|
84
|
+
<Subgenre>Political Fiction</Subgenre>
|
|
85
|
+
</Book>
|
|
86
|
+
</Books>''']
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
Table "dbo"."order_items" {
|
|
90
|
+
"order_id" int [unique, not null]
|
|
91
|
+
"order_item_id" int [pk, not null, increment]
|
|
92
|
+
"product_id" int [unique, not null]
|
|
93
|
+
"quantity" int [not null]
|
|
94
|
+
"unit_price" decimal [not null]
|
|
95
|
+
|
|
96
|
+
Indexes {
|
|
97
|
+
(order_id, product_id) [type: nonclustered, name: "idx_order_items_order_product"]
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
Table "dbo"."orders" {
|
|
102
|
+
"billing_address" text [not null]
|
|
103
|
+
"order_date" datetime2 [default: `getdate()`]
|
|
104
|
+
"order_id" int [pk, not null, increment]
|
|
105
|
+
"shipping_address" text [not null]
|
|
106
|
+
"status" dbo.chk_status [default: 'pending']
|
|
107
|
+
"total_amount" decimal [not null]
|
|
108
|
+
"user_id" int [not null]
|
|
109
|
+
|
|
110
|
+
Indexes {
|
|
111
|
+
(user_id, order_date) [type: nonclustered, name: "idx_orders_user_date"]
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
Table "dbo"."products" {
|
|
116
|
+
"category" varchar
|
|
117
|
+
"created_at" datetime2 [default: `getdate()`]
|
|
118
|
+
"description" text
|
|
119
|
+
"is_available" bit [default: 1]
|
|
120
|
+
"name" varchar [not null]
|
|
121
|
+
"price" decimal [not null]
|
|
122
|
+
"product_id" int [pk, not null, increment]
|
|
123
|
+
"stock_quantity" int [not null, default: 0]
|
|
124
|
+
"updated_at" datetime2 [default: `getdate()`]
|
|
125
|
+
|
|
126
|
+
Indexes {
|
|
127
|
+
category [type: nonclustered, name: "idx_products_category"]
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
Table "dbo"."StringTypes" {
|
|
132
|
+
"CharField" char(10) [default: 'N/A']
|
|
133
|
+
"Id" int [pk, not null, increment]
|
|
134
|
+
"NCharField" nchar [default: `N'N/A'`]
|
|
135
|
+
"NTextField" ntext [default: `N'N/A'`]
|
|
136
|
+
"NVarCharField" nvarchar [default: `N'N/A'`]
|
|
137
|
+
"NVarCharMaxField" nvarchar [default: `N'N/A'`]
|
|
138
|
+
"TextField" text(16) [default: 'N/A']
|
|
139
|
+
"VarcharField" varchar(50) [default: '{"default_key": "default_value"}']
|
|
140
|
+
"VarcharMaxField" varchar [default: 'N/A']
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
Table "dbo"."table_with_comments" {
|
|
144
|
+
"created_at" datetime2 [default: `getdate()`, note: 'Timestamp when the item was created.']
|
|
145
|
+
"description" text [note: 'Detailed description of the item.']
|
|
146
|
+
"id" int [pk, not null, increment, note: 'Unique identifier for each item.']
|
|
147
|
+
"name" varchar [note: 'Name of the item.']
|
|
148
|
+
Note: 'This table stores information about various items.'
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
Table "dbo"."user_define_data_types" {
|
|
152
|
+
"age_end" int
|
|
153
|
+
"age_start" int
|
|
154
|
+
"gender" dbo.chk_gender
|
|
155
|
+
"height" float
|
|
156
|
+
"id" int [pk, not null, increment]
|
|
157
|
+
"name" nvarchar
|
|
158
|
+
"weight" float
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
Table "dbo"."users" {
|
|
162
|
+
"created_at" datetime2 [default: `getdate()`]
|
|
163
|
+
"date_of_birth" date
|
|
164
|
+
"email" varchar [unique, not null]
|
|
165
|
+
"first_name" varchar
|
|
166
|
+
"full_name" varchar
|
|
167
|
+
"full_name_lower" varchar
|
|
168
|
+
"is_active" bit [default: 1]
|
|
169
|
+
"last_login" datetime2
|
|
170
|
+
"last_name" varchar
|
|
171
|
+
"password_hash" varchar [not null]
|
|
172
|
+
"user_id" int [pk, not null, increment]
|
|
173
|
+
"username" varchar [unique, not null]
|
|
174
|
+
|
|
175
|
+
Indexes {
|
|
176
|
+
email [type: nonclustered, name: "idx_users_email"]
|
|
177
|
+
full_name [type: nonclustered, name: "idx_users_full_name"]
|
|
178
|
+
(is_active, full_name_lower) [type: nonclustered, name: "idx_users_is_active_full_name"]
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
Ref "FK_AuthorNationality":"dbo"."Authors".("AuthorID", "NationalityID") < "dbo"."Books".("AuthorID", "NationalityID")
|
|
183
|
+
|
|
184
|
+
Ref "fk_product":"dbo"."products"."product_id" < "dbo"."order_items"."product_id" [update: cascade]
|
|
185
|
+
|
|
186
|
+
Ref "fk_order":"dbo"."orders"."order_id" < "dbo"."order_items"."order_id" [update: cascade, delete: cascade]
|
|
187
|
+
|
|
188
|
+
Ref "fk_user":"dbo"."users"."user_id" < "dbo"."orders"."user_id" [update: cascade, delete: cascade]
|
|
189
|
+
|
|
190
|
+
Ref "fk_gender":"dbo"."gender_reference"."value" < "dbo"."user_define_data_types"."gender"
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
SET QUOTED_IDENTIFIER ON;
|
|
2
|
+
GO
|
|
3
|
+
|
|
4
|
+
CREATE DATABASE dbml_test;
|
|
5
|
+
GO
|
|
6
|
+
|
|
7
|
+
USE dbml_test;
|
|
8
|
+
GO
|
|
9
|
+
|
|
10
|
+
-- Create users table
|
|
11
|
+
CREATE TABLE users (
|
|
12
|
+
user_id INT IDENTITY(1,1) PRIMARY KEY,
|
|
13
|
+
username VARCHAR(50) UNIQUE NOT NULL,
|
|
14
|
+
email VARCHAR(100) UNIQUE NOT NULL,
|
|
15
|
+
password_hash VARCHAR(255) NOT NULL,
|
|
16
|
+
first_name VARCHAR(50),
|
|
17
|
+
last_name VARCHAR(50),
|
|
18
|
+
full_name VARCHAR(100),
|
|
19
|
+
full_name_lower AS LOWER(full_name) PERSISTED, -- Computed column with PERSISTED option
|
|
20
|
+
date_of_birth DATE,
|
|
21
|
+
created_at DATETIME2 DEFAULT CURRENT_TIMESTAMP,
|
|
22
|
+
last_login DATETIME2,
|
|
23
|
+
is_active BIT DEFAULT 1,
|
|
24
|
+
CONSTRAINT chk_email_format CHECK (email LIKE '%_@_%._%'),
|
|
25
|
+
CONSTRAINT chk_age CHECK (date_of_birth <= DATEADD(YEAR, -13, GETDATE()))
|
|
26
|
+
);
|
|
27
|
+
GO
|
|
28
|
+
|
|
29
|
+
-- Create an index on the email column for faster lookups
|
|
30
|
+
CREATE INDEX idx_users_email ON users (email);
|
|
31
|
+
GO
|
|
32
|
+
|
|
33
|
+
CREATE UNIQUE INDEX idx_users_user_id ON users (user_id);
|
|
34
|
+
GO
|
|
35
|
+
|
|
36
|
+
CREATE INDEX idx_users_full_name ON users (full_name);
|
|
37
|
+
GO
|
|
38
|
+
|
|
39
|
+
CREATE INDEX idx_users_is_active_full_name ON users (is_active, full_name_lower);
|
|
40
|
+
GO
|
|
41
|
+
|
|
42
|
+
-- Create products table
|
|
43
|
+
CREATE TABLE products (
|
|
44
|
+
product_id INT IDENTITY(1,1) PRIMARY KEY,
|
|
45
|
+
name VARCHAR(100) NOT NULL,
|
|
46
|
+
description TEXT,
|
|
47
|
+
price DECIMAL(10, 2) NOT NULL,
|
|
48
|
+
stock_quantity INT NOT NULL DEFAULT 0,
|
|
49
|
+
category VARCHAR(50),
|
|
50
|
+
created_at DATETIME2 DEFAULT CURRENT_TIMESTAMP,
|
|
51
|
+
updated_at DATETIME2 DEFAULT CURRENT_TIMESTAMP,
|
|
52
|
+
is_available BIT DEFAULT 1,
|
|
53
|
+
CONSTRAINT chk_price_positive CHECK (price > 0),
|
|
54
|
+
CONSTRAINT chk_stock_non_negative CHECK (stock_quantity >= 0)
|
|
55
|
+
);
|
|
56
|
+
GO
|
|
57
|
+
|
|
58
|
+
-- Create an index on the category column for faster filtering
|
|
59
|
+
CREATE INDEX idx_products_category ON products (category);
|
|
60
|
+
GO
|
|
61
|
+
|
|
62
|
+
-- Create orders table
|
|
63
|
+
CREATE TABLE orders (
|
|
64
|
+
order_id INT IDENTITY(1,1) PRIMARY KEY,
|
|
65
|
+
user_id INT NOT NULL,
|
|
66
|
+
order_date DATETIME2 DEFAULT CURRENT_TIMESTAMP,
|
|
67
|
+
total_amount DECIMAL(12, 2) NOT NULL,
|
|
68
|
+
status VARCHAR(20) DEFAULT 'pending',
|
|
69
|
+
shipping_address TEXT NOT NULL,
|
|
70
|
+
billing_address TEXT NOT NULL,
|
|
71
|
+
CONSTRAINT fk_user FOREIGN KEY (user_id) REFERENCES users(user_id)
|
|
72
|
+
ON DELETE CASCADE -- Delete orders if the user is deleted
|
|
73
|
+
ON UPDATE CASCADE, -- Update user_id in orders if user_id in users is updated
|
|
74
|
+
CONSTRAINT chk_total_amount_positive CHECK (total_amount > 0),
|
|
75
|
+
CONSTRAINT chk_status CHECK (status IN ('pending', 'processing', 'shipped', 'delivered', 'cancelled'))
|
|
76
|
+
);
|
|
77
|
+
GO
|
|
78
|
+
|
|
79
|
+
-- Create an index on the user_id and order_date columns for faster querying
|
|
80
|
+
CREATE INDEX idx_orders_user_date ON orders (user_id, order_date);
|
|
81
|
+
GO
|
|
82
|
+
|
|
83
|
+
-- Create order_items table
|
|
84
|
+
CREATE TABLE order_items (
|
|
85
|
+
order_item_id INT IDENTITY(1,1) PRIMARY KEY,
|
|
86
|
+
order_id INT NOT NULL,
|
|
87
|
+
product_id INT NOT NULL,
|
|
88
|
+
quantity INT NOT NULL,
|
|
89
|
+
unit_price DECIMAL(10, 2) NOT NULL,
|
|
90
|
+
CONSTRAINT fk_order FOREIGN KEY (order_id) REFERENCES orders(order_id)
|
|
91
|
+
ON DELETE CASCADE -- Delete order items if the order is deleted
|
|
92
|
+
ON UPDATE CASCADE, -- Update order_id in order_items if order_id in orders is updated
|
|
93
|
+
CONSTRAINT fk_product FOREIGN KEY (product_id) REFERENCES products(product_id)
|
|
94
|
+
ON DELETE NO ACTION -- Default behavior: Prevent deletion of products that are referenced in order items
|
|
95
|
+
ON UPDATE CASCADE, -- Update product_id in order_items if product_id in products is updated
|
|
96
|
+
CONSTRAINT chk_quantity_positive CHECK (quantity > 0),
|
|
97
|
+
CONSTRAINT chk_unit_price_positive CHECK (unit_price > 0),
|
|
98
|
+
CONSTRAINT uq_order_product UNIQUE (order_id, product_id)
|
|
99
|
+
);
|
|
100
|
+
GO
|
|
101
|
+
|
|
102
|
+
-- Create a composite index on order_id and product_id for faster joins
|
|
103
|
+
CREATE INDEX idx_order_items_order_product ON order_items (order_id, product_id);
|
|
104
|
+
GO
|
|
105
|
+
|
|
106
|
+
-- Create a table with default values for string types
|
|
107
|
+
CREATE TABLE StringTypes (
|
|
108
|
+
Id INT PRIMARY KEY IDENTITY(1,1), -- Auto-incrementing primary key
|
|
109
|
+
CharField CHAR(10) DEFAULT 'N/A', -- Fixed-length non-Unicode string
|
|
110
|
+
VarcharField VARCHAR(50) DEFAULT '{"default_key": "default_value"}', -- Variable-length non-Unicode string
|
|
111
|
+
VarcharMaxField VARCHAR(MAX) DEFAULT 'N/A', -- Variable-length non-Unicode string with max size
|
|
112
|
+
TextField TEXT DEFAULT 'N/A', -- Variable-length non-Unicode string (deprecated)
|
|
113
|
+
NCharField NCHAR(10) DEFAULT N'N/A', -- Fixed-length Unicode string
|
|
114
|
+
NVarCharField NVARCHAR(50) DEFAULT N'N/A', -- Variable-length Unicode string
|
|
115
|
+
NVarCharMaxField NVARCHAR(MAX) DEFAULT N'N/A', -- Variable-length Unicode string with max size
|
|
116
|
+
NTextField NTEXT DEFAULT N'N/A' -- Variable-length Unicode string (deprecated)
|
|
117
|
+
);
|
|
118
|
+
GO
|
|
119
|
+
|
|
120
|
+
-- Create a table with default value for number type and boolean type
|
|
121
|
+
CREATE TABLE NumberTypes (
|
|
122
|
+
ID INT IDENTITY(1,1) PRIMARY KEY,
|
|
123
|
+
TINYINTCol TINYINT DEFAULT 0,
|
|
124
|
+
SMALLINTCol SMALLINT DEFAULT 0,
|
|
125
|
+
INTCol INT DEFAULT 0,
|
|
126
|
+
BIGINTCol BIGINT DEFAULT 0,
|
|
127
|
+
DECIMALCol DECIMAL(10, 2) DEFAULT 0.00,
|
|
128
|
+
NUMERICCol NUMERIC(10, 2) DEFAULT 0.00,
|
|
129
|
+
FLOATCol FLOAT DEFAULT 0.0,
|
|
130
|
+
REALCol REAL DEFAULT 0.0,
|
|
131
|
+
BITCol BIT DEFAULT 0 -- Using BIT for boolean
|
|
132
|
+
);
|
|
133
|
+
GO
|
|
134
|
+
|
|
135
|
+
-- Create a table with default values for date and time types
|
|
136
|
+
CREATE TABLE DatetimeTypes (
|
|
137
|
+
ID INT IDENTITY(1,1) PRIMARY KEY,
|
|
138
|
+
DATECol DATE DEFAULT GETDATE(),
|
|
139
|
+
TIMECol TIME DEFAULT CAST(GETDATE() AS TIME),
|
|
140
|
+
DATETIMECol DATETIME DEFAULT GETDATE(),
|
|
141
|
+
DATETIME2Col DATETIME2 DEFAULT SYSDATETIME(),
|
|
142
|
+
SMALLDATETIMECol SMALLDATETIME DEFAULT GETDATE(),
|
|
143
|
+
ROWVERSIONCol ROWVERSION, -- Automatically generated unique value
|
|
144
|
+
DATETIMEOFFSETCol DATETIMEOFFSET DEFAULT SYSDATETIMEOFFSET()
|
|
145
|
+
);
|
|
146
|
+
GO
|
|
147
|
+
|
|
148
|
+
-- Create a table with default values for other data types
|
|
149
|
+
CREATE TABLE ObjectTypes (
|
|
150
|
+
Id INT PRIMARY KEY IDENTITY(1,1), -- Auto-incrementing primary key
|
|
151
|
+
XmlField XML DEFAULT '<Books>
|
|
152
|
+
<Book>
|
|
153
|
+
<Title>The Great Gatsby</Title>
|
|
154
|
+
<Author>F. Scott Fitzgerald</Author>
|
|
155
|
+
<Year>1925</Year>
|
|
156
|
+
<Price>10.99</Price>
|
|
157
|
+
<Publisher>Scribner</Publisher>
|
|
158
|
+
<Location>New York</Location>
|
|
159
|
+
<Genre>Fiction</Genre>
|
|
160
|
+
<Subgenre>Classic</Subgenre>
|
|
161
|
+
</Book>
|
|
162
|
+
<Book>
|
|
163
|
+
<Title>1984</Title>
|
|
164
|
+
<Author>George Orwell</Author>
|
|
165
|
+
<Year>1949</Year>
|
|
166
|
+
<Price>8.99</Price>
|
|
167
|
+
<Publisher>Secker & Warburg</Publisher>
|
|
168
|
+
<Location>London</Location>
|
|
169
|
+
<Genre>Dystopian</Genre>
|
|
170
|
+
<Subgenre>Political Fiction</Subgenre>
|
|
171
|
+
</Book>
|
|
172
|
+
</Books>', -- Complex XML structure
|
|
173
|
+
JsonField NVARCHAR(MAX) DEFAULT N'{"defaultKey": "defaultValue", "status": "active", "count": 0}',
|
|
174
|
+
BinaryField BINARY(50) DEFAULT 0x00, -- Fixed-length binary data with a default value of zero
|
|
175
|
+
VarBinaryField VARBINARY(50) DEFAULT 0x00, -- Variable-length binary data with a default value of zero
|
|
176
|
+
VarBinaryMaxField VARBINARY(MAX) DEFAULT 0x00, -- Variable-length binary data with a default value of zero
|
|
177
|
+
ImageField IMAGE DEFAULT 0x00 -- Variable-length binary data (deprecated) with a default value of zero
|
|
178
|
+
);
|
|
179
|
+
GO
|
|
180
|
+
|
|
181
|
+
-- Create a reference table for gender
|
|
182
|
+
CREATE TABLE gender_reference (
|
|
183
|
+
value NVARCHAR(10) PRIMARY KEY
|
|
184
|
+
);
|
|
185
|
+
GO
|
|
186
|
+
|
|
187
|
+
-- Populate the gender_reference table with the values 'Male', 'Female', and 'Other'
|
|
188
|
+
INSERT INTO gender_reference (value) VALUES ('Male'), ('Female'), ('Other');
|
|
189
|
+
GO
|
|
190
|
+
|
|
191
|
+
-- Create the table user_define_data_types with the necessary data types and constraints
|
|
192
|
+
CREATE TABLE user_define_data_types (
|
|
193
|
+
id INT IDENTITY(1,1) PRIMARY KEY, -- Using IDENTITY for auto-incrementing column
|
|
194
|
+
name NVARCHAR(50),
|
|
195
|
+
gender NVARCHAR(10),
|
|
196
|
+
age_start INT, -- Start of age range
|
|
197
|
+
age_end INT, -- End of age range
|
|
198
|
+
height FLOAT,
|
|
199
|
+
weight FLOAT,
|
|
200
|
+
CONSTRAINT chk_gender CHECK (gender IN ('Male', 'Female', 'Other')), -- Using CHECK constraint for ENUM-like behavior
|
|
201
|
+
CONSTRAINT chk_age_range CHECK (age_start <= age_end) -- Ensure that the start of the range is less than or equal to the end
|
|
202
|
+
);
|
|
203
|
+
GO
|
|
204
|
+
|
|
205
|
+
-- Add foreign key constraint to ensure gender values are valid
|
|
206
|
+
ALTER TABLE user_define_data_types
|
|
207
|
+
ADD CONSTRAINT fk_gender FOREIGN KEY (gender) REFERENCES gender_reference(value);
|
|
208
|
+
GO
|
|
209
|
+
|
|
210
|
+
-- Create table with comments
|
|
211
|
+
CREATE TABLE table_with_comments (
|
|
212
|
+
id INT IDENTITY(1,1) PRIMARY KEY,
|
|
213
|
+
name VARCHAR(100),
|
|
214
|
+
description TEXT,
|
|
215
|
+
created_at DATETIME2 DEFAULT CURRENT_TIMESTAMP
|
|
216
|
+
);
|
|
217
|
+
GO
|
|
218
|
+
|
|
219
|
+
-- Add comments
|
|
220
|
+
EXEC sys.sp_addextendedproperty
|
|
221
|
+
@name=N'MS_Description',
|
|
222
|
+
@value=N'This table stores information about various items.',
|
|
223
|
+
@level0type=N'SCHEMA',
|
|
224
|
+
@level0name=N'dbo',
|
|
225
|
+
@level1type=N'TABLE',
|
|
226
|
+
@level1name=N'table_with_comments';
|
|
227
|
+
GO
|
|
228
|
+
|
|
229
|
+
-- Add comments to the columns of table_with_comments
|
|
230
|
+
EXEC sys.sp_addextendedproperty
|
|
231
|
+
@name=N'MS_Description',
|
|
232
|
+
@value=N'Unique identifier for each item.',
|
|
233
|
+
@level0type=N'SCHEMA',
|
|
234
|
+
@level0name=N'dbo',
|
|
235
|
+
@level1type=N'TABLE',
|
|
236
|
+
@level1name=N'table_with_comments',
|
|
237
|
+
@level2type=N'COLUMN',
|
|
238
|
+
@level2name=N'id';
|
|
239
|
+
GO
|
|
240
|
+
|
|
241
|
+
EXEC sys.sp_addextendedproperty
|
|
242
|
+
@name=N'MS_Description',
|
|
243
|
+
@value=N'Name of the item.',
|
|
244
|
+
@level0type=N'SCHEMA',
|
|
245
|
+
@level0name=N'dbo',
|
|
246
|
+
@level1type=N'TABLE',
|
|
247
|
+
@level1name=N'table_with_comments',
|
|
248
|
+
@level2type=N'COLUMN',
|
|
249
|
+
@level2name=N'name';
|
|
250
|
+
GO
|
|
251
|
+
|
|
252
|
+
EXEC sys.sp_addextendedproperty
|
|
253
|
+
@name=N'MS_Description',
|
|
254
|
+
@value=N'Detailed description of the item.',
|
|
255
|
+
@level0type=N'SCHEMA',
|
|
256
|
+
@level0name=N'dbo',
|
|
257
|
+
@level1type=N'TABLE',
|
|
258
|
+
@level1name=N'table_with_comments',
|
|
259
|
+
@level2type=N'COLUMN',
|
|
260
|
+
@level2name=N'description';
|
|
261
|
+
GO
|
|
262
|
+
|
|
263
|
+
EXEC sys.sp_addextendedproperty
|
|
264
|
+
@name=N'MS_Description',
|
|
265
|
+
@value=N'Timestamp when the item was created.',
|
|
266
|
+
@level0type=N'SCHEMA',
|
|
267
|
+
@level0name=N'dbo',
|
|
268
|
+
@level1type=N'TABLE',
|
|
269
|
+
@level1name=N'table_with_comments',
|
|
270
|
+
@level2type=N'COLUMN',
|
|
271
|
+
@level2name=N'created_at';
|
|
272
|
+
GO
|
|
273
|
+
|
|
274
|
+
-- Add composite primary key, composite unique constraint, and composite foreign key constraint
|
|
275
|
+
CREATE TABLE Authors (
|
|
276
|
+
AuthorID INT,
|
|
277
|
+
NationalityID INT,
|
|
278
|
+
AuthorName NVARCHAR(100),
|
|
279
|
+
BirthYear INT,
|
|
280
|
+
PRIMARY KEY (AuthorID, NationalityID),
|
|
281
|
+
UNIQUE (AuthorName, BirthYear)
|
|
282
|
+
);
|
|
283
|
+
GO
|
|
284
|
+
|
|
285
|
+
CREATE TABLE Books (
|
|
286
|
+
BookID INT,
|
|
287
|
+
AuthorID INT,
|
|
288
|
+
NationalityID INT,
|
|
289
|
+
ISBN NVARCHAR(20),
|
|
290
|
+
Title NVARCHAR(200),
|
|
291
|
+
PRIMARY KEY (BookID, AuthorID),
|
|
292
|
+
UNIQUE (ISBN),
|
|
293
|
+
CONSTRAINT FK_AuthorNationality FOREIGN KEY (AuthorID, NationalityID)
|
|
294
|
+
REFERENCES Authors (AuthorID, NationalityID)
|
|
295
|
+
);
|
|
296
|
+
GO
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
✔ Generated DBML file from database's connection: schema.dbml
|