velocious 1.0.430 → 1.0.432
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/bin/velocious.js +48 -0
- package/build/application.js +229 -0
- package/build/authorization/ability.js +329 -0
- package/build/authorization/base-resource.js +143 -0
- package/build/background-jobs/client.js +50 -0
- package/build/background-jobs/cron-expression.js +277 -0
- package/build/background-jobs/forked-runner-child.js +86 -0
- package/build/background-jobs/job-record.js +13 -0
- package/build/background-jobs/job-registry.js +92 -0
- package/build/background-jobs/job-runner.js +107 -0
- package/build/background-jobs/job.js +77 -0
- package/build/background-jobs/json-socket.js +78 -0
- package/build/background-jobs/main.js +926 -0
- package/build/background-jobs/normalize-error.js +26 -0
- package/build/background-jobs/scheduler.js +274 -0
- package/build/background-jobs/socket-request.js +68 -0
- package/build/background-jobs/status-reporter.js +101 -0
- package/build/background-jobs/store.js +994 -0
- package/build/background-jobs/types.js +70 -0
- package/build/background-jobs/web/authorization.js +89 -0
- package/build/background-jobs/web/controller.js +280 -0
- package/build/background-jobs/web/index.js +57 -0
- package/build/background-jobs/web/path-matcher.js +74 -0
- package/build/background-jobs/web/registry.js +49 -0
- package/build/background-jobs/worker.js +683 -0
- package/build/beacon/client.js +330 -0
- package/build/beacon/in-process-broker.js +71 -0
- package/build/beacon/in-process-client.js +139 -0
- package/build/beacon/server.js +148 -0
- package/build/beacon/types.js +55 -0
- package/build/bin/velocious.js +39 -34
- package/build/cli/base-command.js +67 -0
- package/build/cli/browser-cli.js +45 -0
- package/build/cli/commands/background-jobs-main.js +7 -0
- package/build/cli/commands/background-jobs-runner.js +7 -0
- package/build/cli/commands/background-jobs-worker.js +7 -0
- package/build/cli/commands/beacon.js +7 -0
- package/build/cli/commands/console.js +12 -0
- package/build/cli/commands/db/base-command.js +82 -0
- package/build/cli/commands/db/create.js +64 -0
- package/build/cli/commands/db/drop.js +75 -0
- package/build/cli/commands/db/migrate.js +17 -0
- package/build/cli/commands/db/reset.js +22 -0
- package/build/cli/commands/db/rollback.js +15 -0
- package/build/cli/commands/db/schema/dump.js +12 -0
- package/build/cli/commands/db/schema/load.js +12 -0
- package/build/cli/commands/db/seed.js +12 -0
- package/build/cli/commands/db/tenants/check.js +38 -0
- package/build/cli/commands/db/tenants/create.js +33 -0
- package/build/cli/commands/db/tenants/migrate.js +49 -0
- package/build/cli/commands/destroy/migration.js +7 -0
- package/build/cli/commands/generate/base-models.js +7 -0
- package/build/cli/commands/generate/frontend-models.js +12 -0
- package/build/cli/commands/generate/migration.js +7 -0
- package/build/cli/commands/generate/model.js +7 -0
- package/build/cli/commands/init.js +11 -0
- package/build/cli/commands/routes.js +7 -0
- package/build/cli/commands/run-script.js +12 -0
- package/build/cli/commands/runner.js +12 -0
- package/build/cli/commands/server.js +7 -0
- package/build/cli/commands/test.js +9 -0
- package/build/cli/index.js +152 -0
- package/build/cli/tenant-database-command-helper.js +198 -0
- package/build/cli/use-browser-cli.js +30 -0
- package/build/configuration-resolver.js +65 -0
- package/build/configuration-types.js +429 -0
- package/build/configuration.js +2590 -0
- package/build/controller.js +421 -0
- package/build/current-configuration.js +31 -0
- package/build/current.js +80 -0
- package/build/database/annotations-async-hooks.js +47 -0
- package/build/database/annotations.js +40 -0
- package/build/database/drivers/base-column.js +182 -0
- package/build/database/drivers/base-columns-index.js +81 -0
- package/build/database/drivers/base-foreign-key.js +104 -0
- package/build/database/drivers/base-table.js +156 -0
- package/build/database/drivers/base.js +1609 -0
- package/build/database/drivers/mssql/column.js +74 -0
- package/build/database/drivers/mssql/columns-index.js +6 -0
- package/build/database/drivers/mssql/connect-connection.js +16 -0
- package/build/database/drivers/mssql/foreign-key.js +12 -0
- package/build/database/drivers/mssql/index.js +590 -0
- package/build/database/drivers/mssql/options.js +79 -0
- package/build/database/drivers/mssql/query-parser.js +6 -0
- package/build/database/drivers/mssql/sql/alter-table.js +4 -0
- package/build/database/drivers/mssql/sql/create-database.js +36 -0
- package/build/database/drivers/mssql/sql/create-index.js +4 -0
- package/build/database/drivers/mssql/sql/create-table.js +4 -0
- package/build/database/drivers/mssql/sql/delete.js +19 -0
- package/build/database/drivers/mssql/sql/drop-database.js +36 -0
- package/build/database/drivers/mssql/sql/drop-table.js +4 -0
- package/build/database/drivers/mssql/sql/insert.js +4 -0
- package/build/database/drivers/mssql/sql/update.js +31 -0
- package/build/database/drivers/mssql/sql/upsert.js +23 -0
- package/build/database/drivers/mssql/structure-sql.js +120 -0
- package/build/database/drivers/mssql/table.js +145 -0
- package/build/database/drivers/mysql/column.js +112 -0
- package/build/database/drivers/mysql/columns-index.js +22 -0
- package/build/database/drivers/mysql/foreign-key.js +12 -0
- package/build/database/drivers/mysql/index.js +473 -0
- package/build/database/drivers/mysql/options.js +34 -0
- package/build/database/drivers/mysql/query-parser.js +6 -0
- package/build/database/drivers/mysql/query.js +37 -0
- package/build/database/drivers/mysql/sql/alter-table.js +6 -0
- package/build/database/drivers/mysql/sql/create-database.js +39 -0
- package/build/database/drivers/mysql/sql/create-index.js +6 -0
- package/build/database/drivers/mysql/sql/create-table.js +6 -0
- package/build/database/drivers/mysql/sql/delete.js +21 -0
- package/build/database/drivers/mysql/sql/drop-database.js +6 -0
- package/build/database/drivers/mysql/sql/drop-table.js +6 -0
- package/build/database/drivers/mysql/sql/insert.js +6 -0
- package/build/database/drivers/mysql/sql/update.js +33 -0
- package/build/database/drivers/mysql/sql/upsert.js +13 -0
- package/build/database/drivers/mysql/structure-sql.js +93 -0
- package/build/database/drivers/mysql/table.js +121 -0
- package/build/database/drivers/pgsql/column.js +90 -0
- package/build/database/drivers/pgsql/columns-index.js +6 -0
- package/build/database/drivers/pgsql/foreign-key.js +12 -0
- package/build/database/drivers/pgsql/index.js +441 -0
- package/build/database/drivers/pgsql/options.js +32 -0
- package/build/database/drivers/pgsql/query-parser.js +6 -0
- package/build/database/drivers/pgsql/sql/alter-table.js +6 -0
- package/build/database/drivers/pgsql/sql/create-database.js +38 -0
- package/build/database/drivers/pgsql/sql/create-index.js +6 -0
- package/build/database/drivers/pgsql/sql/create-table.js +6 -0
- package/build/database/drivers/pgsql/sql/delete.js +21 -0
- package/build/database/drivers/pgsql/sql/drop-database.js +6 -0
- package/build/database/drivers/pgsql/sql/drop-table.js +6 -0
- package/build/database/drivers/pgsql/sql/insert.js +6 -0
- package/build/database/drivers/pgsql/sql/update.js +33 -0
- package/build/database/drivers/pgsql/sql/upsert.js +14 -0
- package/build/database/drivers/pgsql/structure-sql.js +126 -0
- package/build/database/drivers/pgsql/table.js +135 -0
- package/build/database/drivers/sqlite/base.js +509 -0
- package/build/database/drivers/sqlite/column.js +75 -0
- package/build/database/drivers/sqlite/columns-index.js +30 -0
- package/build/database/drivers/sqlite/connection-sql-js.js +46 -0
- package/build/database/drivers/sqlite/foreign-key.js +24 -0
- package/build/database/drivers/sqlite/index.js +394 -0
- package/build/database/drivers/sqlite/index.native.js +72 -0
- package/build/database/drivers/sqlite/index.web.js +99 -0
- package/build/database/drivers/sqlite/options.js +32 -0
- package/build/database/drivers/sqlite/query-parser.js +6 -0
- package/build/database/drivers/sqlite/query.js +35 -0
- package/build/database/drivers/sqlite/query.native.js +35 -0
- package/build/database/drivers/sqlite/query.web.js +49 -0
- package/build/database/drivers/sqlite/sql/alter-table.js +187 -0
- package/build/database/drivers/sqlite/sql/create-index.js +6 -0
- package/build/database/drivers/sqlite/sql/create-table.js +6 -0
- package/build/database/drivers/sqlite/sql/delete.js +26 -0
- package/build/database/drivers/sqlite/sql/drop-table.js +6 -0
- package/build/database/drivers/sqlite/sql/insert.js +6 -0
- package/build/database/drivers/sqlite/sql/update.js +33 -0
- package/build/database/drivers/sqlite/sql/upsert.js +14 -0
- package/build/database/drivers/sqlite/structure-sql.js +56 -0
- package/build/database/drivers/sqlite/table-rebuilder.js +96 -0
- package/build/database/drivers/sqlite/table.js +131 -0
- package/build/database/drivers/structure-sql/utils.js +35 -0
- package/build/database/handler.js +13 -0
- package/build/database/initializer-from-require-context.js +101 -0
- package/build/database/migration/index.js +438 -0
- package/build/database/migrator/files-finder.js +55 -0
- package/build/database/migrator/types.js +31 -0
- package/build/database/migrator.js +557 -0
- package/build/database/pool/async-tracked-multi-connection.js +1164 -0
- package/build/database/pool/base-methods-forward.js +52 -0
- package/build/database/pool/base.js +380 -0
- package/build/database/pool/single-multi-use.js +118 -0
- package/build/database/query/alter-table-base.js +104 -0
- package/build/database/query/base.js +49 -0
- package/build/database/query/create-database-base.js +42 -0
- package/build/database/query/create-index-base.js +117 -0
- package/build/database/query/create-table-base.js +205 -0
- package/build/database/query/delete-base.js +19 -0
- package/build/database/query/drop-database-base.js +38 -0
- package/build/database/query/drop-table-base.js +58 -0
- package/build/database/query/from-base.js +36 -0
- package/build/database/query/from-plain.js +16 -0
- package/build/database/query/from-table.js +18 -0
- package/build/database/query/index.js +533 -0
- package/build/database/query/insert-base.js +172 -0
- package/build/database/query/join-base.js +43 -0
- package/build/database/query/join-object.js +167 -0
- package/build/database/query/join-plain.js +18 -0
- package/build/database/query/join-tracker.js +93 -0
- package/build/database/query/model-class-query.js +1577 -0
- package/build/database/query/order-base.js +33 -0
- package/build/database/query/order-column.js +77 -0
- package/build/database/query/order-plain.js +28 -0
- package/build/database/query/preloader/belongs-to.js +267 -0
- package/build/database/query/preloader/ensure-model-class-initialized.js +18 -0
- package/build/database/query/preloader/has-many.js +316 -0
- package/build/database/query/preloader/has-one.js +123 -0
- package/build/database/query/preloader/selection.js +152 -0
- package/build/database/query/preloader.js +201 -0
- package/build/database/query/query-data.js +305 -0
- package/build/database/query/select-base.js +30 -0
- package/build/database/query/select-plain.js +18 -0
- package/build/database/query/select-table-and-column.js +28 -0
- package/build/database/query/update-base.js +41 -0
- package/build/database/query/upsert-base.js +103 -0
- package/build/database/query/where-base.js +38 -0
- package/build/database/query/where-combinator.js +31 -0
- package/build/database/query/where-hash.js +77 -0
- package/build/database/query/where-model-class-hash.js +505 -0
- package/build/database/query/where-not.js +23 -0
- package/build/database/query/where-plain.js +20 -0
- package/build/database/query/with-count.js +219 -0
- package/build/database/query-parser/base-query-parser.js +40 -0
- package/build/database/query-parser/from-parser.js +49 -0
- package/build/database/query-parser/group-parser.js +55 -0
- package/build/database/query-parser/joins-parser.js +37 -0
- package/build/database/query-parser/limit-parser.js +77 -0
- package/build/database/query-parser/options.js +94 -0
- package/build/database/query-parser/order-parser.js +45 -0
- package/build/database/query-parser/select-parser.js +67 -0
- package/build/database/query-parser/where-parser.js +46 -0
- package/build/database/record/acts-as-list.js +374 -0
- package/build/database/record/attachments/download.js +49 -0
- package/build/database/record/attachments/handle.js +188 -0
- package/build/database/record/attachments/normalize-input.js +213 -0
- package/build/database/record/attachments/storage-drivers/filesystem.js +114 -0
- package/build/database/record/attachments/storage-drivers/native.js +146 -0
- package/build/database/record/attachments/storage-drivers/s3.js +245 -0
- package/build/database/record/attachments/store.js +591 -0
- package/build/database/record/index.js +4094 -0
- package/build/database/record/instance-relationships/base.js +289 -0
- package/build/database/record/instance-relationships/belongs-to.js +84 -0
- package/build/database/record/instance-relationships/has-many.js +284 -0
- package/build/database/record/instance-relationships/has-one.js +117 -0
- package/build/database/record/record-not-found-error.js +3 -0
- package/build/database/record/relationships/base.js +195 -0
- package/build/database/record/relationships/belongs-to.js +57 -0
- package/build/database/record/relationships/has-many.js +46 -0
- package/build/database/record/relationships/has-one.js +46 -0
- package/build/database/record/state-machine.js +278 -0
- package/build/database/record/user-module.js +43 -0
- package/build/database/record/validators/base.js +27 -0
- package/build/database/record/validators/format.js +50 -0
- package/build/database/record/validators/presence.js +24 -0
- package/build/database/record/validators/uniqueness.js +124 -0
- package/build/database/table-data/index.js +241 -0
- package/build/database/table-data/table-column.js +416 -0
- package/build/database/table-data/table-foreign-key.js +69 -0
- package/build/database/table-data/table-index.js +46 -0
- package/build/database/table-data/table-reference.js +13 -0
- package/build/database/use-database.js +48 -0
- package/build/environment-handlers/base.js +561 -0
- package/build/environment-handlers/browser.js +338 -0
- package/build/environment-handlers/node/cli/commands/background-jobs-main.js +21 -0
- package/build/environment-handlers/node/cli/commands/background-jobs-runner.js +24 -0
- package/build/environment-handlers/node/cli/commands/background-jobs-worker.js +47 -0
- package/build/environment-handlers/node/cli/commands/beacon.js +21 -0
- package/build/environment-handlers/node/cli/commands/cli-command-context.js +31 -0
- package/build/environment-handlers/node/cli/commands/console.js +149 -0
- package/build/environment-handlers/node/cli/commands/db/schema/dump.js +43 -0
- package/build/environment-handlers/node/cli/commands/db/schema/load.js +69 -0
- package/build/environment-handlers/node/cli/commands/db/seed.js +79 -0
- package/build/environment-handlers/node/cli/commands/destroy/migration.js +47 -0
- package/build/environment-handlers/node/cli/commands/generate/base-models.js +396 -0
- package/build/environment-handlers/node/cli/commands/generate/frontend-models.js +872 -0
- package/build/environment-handlers/node/cli/commands/generate/migration.js +45 -0
- package/build/environment-handlers/node/cli/commands/generate/model.js +45 -0
- package/build/environment-handlers/node/cli/commands/init.js +68 -0
- package/build/environment-handlers/node/cli/commands/routes.js +63 -0
- package/build/environment-handlers/node/cli/commands/run-script.js +85 -0
- package/build/environment-handlers/node/cli/commands/runner.js +84 -0
- package/build/environment-handlers/node/cli/commands/server.js +151 -0
- package/build/environment-handlers/node/cli/commands/test.js +118 -0
- package/build/environment-handlers/node.js +887 -0
- package/build/error-logger.js +30 -0
- package/build/frontend-model-controller.js +3491 -0
- package/build/frontend-model-resource/base-resource.js +935 -0
- package/build/frontend-models/base.js +4004 -0
- package/build/frontend-models/clear-pending-debounced-callback.js +16 -0
- package/build/frontend-models/event-hook-models.js +49 -0
- package/build/frontend-models/model-registry.js +28 -0
- package/build/frontend-models/outgoing-event-buffer.js +51 -0
- package/build/frontend-models/preloader.js +169 -0
- package/build/frontend-models/query.js +2245 -0
- package/build/frontend-models/resource-config-validation.js +56 -0
- package/build/frontend-models/resource-definition.js +399 -0
- package/build/frontend-models/transport-serialization.js +369 -0
- package/build/frontend-models/use-created-event.js +21 -0
- package/build/frontend-models/use-destroyed-event.js +148 -0
- package/build/frontend-models/use-model-class-event.js +164 -0
- package/build/frontend-models/use-updated-event.js +152 -0
- package/build/frontend-models/websocket-channel.js +494 -0
- package/build/frontend-models/websocket-publishers.js +224 -0
- package/build/http-client/header.js +17 -0
- package/build/http-client/index.js +139 -0
- package/build/http-client/request.js +94 -0
- package/build/http-client/response.js +151 -0
- package/build/http-client/websocket-client.js +27 -0
- package/build/http-server/client/index.js +507 -0
- package/build/http-server/client/params-to-object.js +152 -0
- package/build/http-server/client/request-buffer/form-data-part.js +139 -0
- package/build/http-server/client/request-buffer/header.js +19 -0
- package/build/http-server/client/request-buffer/index.js +535 -0
- package/build/http-server/client/request-parser.js +195 -0
- package/build/http-server/client/request-runner.js +321 -0
- package/build/http-server/client/request-timing.js +171 -0
- package/build/http-server/client/request.js +114 -0
- package/build/http-server/client/response.js +251 -0
- package/build/http-server/client/uploaded-file/memory-uploaded-file.js +32 -0
- package/build/http-server/client/uploaded-file/temporary-uploaded-file.js +32 -0
- package/build/http-server/client/uploaded-file/uploaded-file.js +36 -0
- package/build/http-server/client/websocket-request.js +147 -0
- package/build/http-server/client/websocket-session.js +1755 -0
- package/build/http-server/cookie.js +245 -0
- package/build/http-server/development-reloader.js +240 -0
- package/build/http-server/index.js +561 -0
- package/build/http-server/remote-address.js +77 -0
- package/build/http-server/server-client.js +222 -0
- package/build/http-server/server-lock.js +178 -0
- package/build/http-server/websocket-channel-subscribers.js +110 -0
- package/build/http-server/websocket-channel.js +137 -0
- package/build/http-server/websocket-connection.js +118 -0
- package/build/http-server/websocket-event-log-store.js +433 -0
- package/build/http-server/websocket-events-host.js +170 -0
- package/build/http-server/websocket-events.js +50 -0
- package/build/http-server/worker-handler/channel-subscriber-dispatch.js +28 -0
- package/build/http-server/worker-handler/in-process.js +155 -0
- package/build/http-server/worker-handler/index.js +370 -0
- package/build/http-server/worker-handler/worker-script.js +6 -0
- package/build/http-server/worker-handler/worker-thread.js +286 -0
- package/build/index.js +1 -2
- package/build/initializer.js +39 -0
- package/build/jobs/mail-delivery.js +22 -0
- package/build/logger/base-logger.js +34 -0
- package/build/logger/console-logger.js +28 -0
- package/build/logger/file-logger.js +36 -0
- package/build/logger/outputs/array-output.js +50 -0
- package/build/logger/outputs/console-output.js +32 -0
- package/build/logger/outputs/file-output.js +55 -0
- package/build/logger/outputs/stdout-output.js +64 -0
- package/build/logger.js +507 -0
- package/build/mailer/backends/smtp.js +197 -0
- package/build/mailer/base.js +337 -0
- package/build/mailer/delivery.js +70 -0
- package/build/mailer/index.js +24 -0
- package/build/mailer.js +15 -0
- package/build/plugins/sqljs-wasm-route-controller.js +70 -0
- package/build/plugins/sqljs-wasm-route.js +71 -0
- package/build/record-payload-values.js +83 -0
- package/build/routes/app-routes.js +17 -0
- package/build/routes/base-route.js +133 -0
- package/build/routes/basic-route.js +109 -0
- package/build/routes/built-in/debug/controller.js +12 -0
- package/build/routes/built-in/errors/controller.js +7 -0
- package/build/routes/get-route.js +75 -0
- package/build/routes/hooks/frontend-model-command-route-hook.js +100 -0
- package/build/routes/index.js +50 -0
- package/build/routes/namespace-route.js +51 -0
- package/build/routes/plugin-routes.js +141 -0
- package/build/routes/post-route.js +74 -0
- package/build/routes/resolver.js +535 -0
- package/build/routes/resource-route.js +154 -0
- package/build/routes/root-route.js +11 -0
- package/build/src/authorization/ability.d.ts +24 -23
- package/build/src/authorization/ability.d.ts.map +1 -1
- package/build/src/authorization/ability.js +14 -13
- package/build/src/authorization/base-resource.d.ts +20 -26
- package/build/src/authorization/base-resource.d.ts.map +1 -1
- package/build/src/authorization/base-resource.js +13 -11
- package/build/src/configuration-types.d.ts +21 -2
- package/build/src/configuration-types.d.ts.map +1 -1
- package/build/src/configuration-types.js +8 -2
- package/build/src/database/query/where-combinator.d.ts.map +1 -1
- package/build/src/database/query/where-combinator.js +1 -2
- package/build/src/database/record/acts-as-list.js +2 -2
- package/build/src/database/record/attachments/store.d.ts +1 -1
- package/build/src/database/record/attachments/store.d.ts.map +1 -1
- package/build/src/database/record/attachments/store.js +2 -2
- package/build/src/database/record/index.d.ts +82 -20
- package/build/src/database/record/index.d.ts.map +1 -1
- package/build/src/database/record/index.js +126 -13
- package/build/src/database/record/relationships/base.d.ts +2 -2
- package/build/src/database/record/relationships/base.d.ts.map +1 -1
- package/build/src/database/record/relationships/base.js +3 -3
- package/build/src/environment-handlers/node/cli/commands/generate/base-models.d.ts +4 -2
- package/build/src/environment-handlers/node/cli/commands/generate/base-models.d.ts.map +1 -1
- package/build/src/environment-handlers/node/cli/commands/generate/base-models.js +59 -36
- package/build/src/frontend-model-controller.d.ts +6 -6
- package/build/src/frontend-model-controller.d.ts.map +1 -1
- package/build/src/frontend-model-controller.js +4 -4
- package/build/src/frontend-model-resource/base-resource.d.ts +18 -17
- package/build/src/frontend-model-resource/base-resource.d.ts.map +1 -1
- package/build/src/frontend-model-resource/base-resource.js +22 -10
- package/build/src/frontend-models/base.d.ts +19 -12
- package/build/src/frontend-models/base.d.ts.map +1 -1
- package/build/src/frontend-models/base.js +79 -48
- package/build/src/frontend-models/preloader.d.ts +6 -6
- package/build/src/frontend-models/preloader.d.ts.map +1 -1
- package/build/src/frontend-models/preloader.js +5 -5
- package/build/src/frontend-models/query.d.ts.map +1 -1
- package/build/src/frontend-models/query.js +1 -4
- package/build/src/utils/ransack.d.ts.map +1 -1
- package/build/src/utils/ransack.js +1 -2
- package/build/templates/configuration.js +61 -0
- package/build/templates/generate-migration.js +11 -0
- package/build/templates/generate-model.js +6 -0
- package/build/templates/routes.js +11 -0
- package/build/testing/base-expect.js +17 -0
- package/build/testing/browser-frontend-model-event-hook-scenarios.js +520 -0
- package/build/testing/browser-test-app.js +32 -0
- package/build/testing/expect-to-change.js +55 -0
- package/build/testing/expect-utils.js +269 -0
- package/build/testing/expect.js +763 -0
- package/build/testing/request-client.js +90 -0
- package/build/testing/test-files-finder.js +364 -0
- package/build/testing/test-filter-parser.js +198 -0
- package/build/testing/test-runner.js +1168 -0
- package/build/testing/test-suite-splitter.js +177 -0
- package/build/testing/test.js +370 -0
- package/build/utils/backtrace-cleaner-node.js +87 -0
- package/build/utils/backtrace-cleaner.js +266 -0
- package/build/utils/ensure-error.js +15 -0
- package/build/utils/event-emitter.js +8 -0
- package/build/utils/file-exists.js +18 -0
- package/build/utils/format-value.js +101 -0
- package/build/utils/model-scope.js +56 -0
- package/build/utils/nest-callbacks.js +22 -0
- package/build/utils/plain-object.js +14 -0
- package/build/utils/ransack.js +859 -0
- package/build/utils/rest-args-error.js +14 -0
- package/build/utils/singularize-model-name.js +18 -0
- package/build/utils/split-sql-statements.js +88 -0
- package/build/utils/to-import-specifier.js +53 -0
- package/build/utils/with-tracked-stack-async-hooks.js +103 -0
- package/build/utils/with-tracked-stack.js +38 -0
- package/build/velocious-error.js +34 -0
- package/index.js +1 -0
- package/package.json +10 -4
- package/scripts/clean-build.js +8 -0
- package/scripts/ensure-bin-executable.js +13 -0
- package/scripts/run-tests.js +37 -0
- package/scripts/test-browser.js +486 -0
- package/src/application.js +229 -0
- package/src/authorization/ability.js +329 -0
- package/src/authorization/base-resource.js +143 -0
- package/src/background-jobs/client.js +50 -0
- package/src/background-jobs/cron-expression.js +277 -0
- package/src/background-jobs/forked-runner-child.js +86 -0
- package/src/background-jobs/job-record.js +13 -0
- package/src/background-jobs/job-registry.js +92 -0
- package/src/background-jobs/job-runner.js +107 -0
- package/src/background-jobs/job.js +77 -0
- package/src/background-jobs/json-socket.js +78 -0
- package/src/background-jobs/main.js +926 -0
- package/src/background-jobs/normalize-error.js +26 -0
- package/src/background-jobs/scheduler.js +274 -0
- package/src/background-jobs/socket-request.js +68 -0
- package/src/background-jobs/status-reporter.js +101 -0
- package/src/background-jobs/store.js +994 -0
- package/src/background-jobs/types.js +70 -0
- package/src/background-jobs/web/authorization.js +89 -0
- package/src/background-jobs/web/controller.js +280 -0
- package/src/background-jobs/web/index.js +57 -0
- package/src/background-jobs/web/path-matcher.js +74 -0
- package/src/background-jobs/web/registry.js +49 -0
- package/src/background-jobs/worker.js +683 -0
- package/src/beacon/client.js +330 -0
- package/src/beacon/in-process-broker.js +71 -0
- package/src/beacon/in-process-client.js +139 -0
- package/src/beacon/server.js +148 -0
- package/src/beacon/types.js +55 -0
- package/src/cli/base-command.js +67 -0
- package/src/cli/browser-cli.js +45 -0
- package/src/cli/commands/background-jobs-main.js +7 -0
- package/src/cli/commands/background-jobs-runner.js +7 -0
- package/src/cli/commands/background-jobs-worker.js +7 -0
- package/src/cli/commands/beacon.js +7 -0
- package/src/cli/commands/console.js +12 -0
- package/src/cli/commands/db/base-command.js +82 -0
- package/src/cli/commands/db/create.js +64 -0
- package/src/cli/commands/db/drop.js +75 -0
- package/src/cli/commands/db/migrate.js +17 -0
- package/src/cli/commands/db/reset.js +22 -0
- package/src/cli/commands/db/rollback.js +15 -0
- package/src/cli/commands/db/schema/dump.js +12 -0
- package/src/cli/commands/db/schema/load.js +12 -0
- package/src/cli/commands/db/seed.js +12 -0
- package/src/cli/commands/db/tenants/check.js +38 -0
- package/src/cli/commands/db/tenants/create.js +33 -0
- package/src/cli/commands/db/tenants/migrate.js +49 -0
- package/src/cli/commands/destroy/migration.js +7 -0
- package/src/cli/commands/generate/base-models.js +7 -0
- package/src/cli/commands/generate/frontend-models.js +12 -0
- package/src/cli/commands/generate/migration.js +7 -0
- package/src/cli/commands/generate/model.js +7 -0
- package/src/cli/commands/init.js +11 -0
- package/src/cli/commands/routes.js +7 -0
- package/src/cli/commands/run-script.js +12 -0
- package/src/cli/commands/runner.js +12 -0
- package/src/cli/commands/server.js +7 -0
- package/src/cli/commands/test.js +9 -0
- package/src/cli/index.js +152 -0
- package/src/cli/tenant-database-command-helper.js +198 -0
- package/src/cli/use-browser-cli.js +30 -0
- package/src/configuration-resolver.js +65 -0
- package/src/configuration-types.js +429 -0
- package/src/configuration.js +2590 -0
- package/src/controller.js +421 -0
- package/src/current-configuration.js +31 -0
- package/src/current.js +80 -0
- package/src/database/annotations-async-hooks.js +47 -0
- package/src/database/annotations.js +40 -0
- package/src/database/drivers/base-column.js +182 -0
- package/src/database/drivers/base-columns-index.js +81 -0
- package/src/database/drivers/base-foreign-key.js +104 -0
- package/src/database/drivers/base-table.js +156 -0
- package/src/database/drivers/base.js +1609 -0
- package/src/database/drivers/mssql/column.js +74 -0
- package/src/database/drivers/mssql/columns-index.js +6 -0
- package/src/database/drivers/mssql/connect-connection.js +16 -0
- package/src/database/drivers/mssql/foreign-key.js +12 -0
- package/src/database/drivers/mssql/index.js +590 -0
- package/src/database/drivers/mssql/options.js +79 -0
- package/src/database/drivers/mssql/query-parser.js +6 -0
- package/src/database/drivers/mssql/sql/alter-table.js +4 -0
- package/src/database/drivers/mssql/sql/create-database.js +36 -0
- package/src/database/drivers/mssql/sql/create-index.js +4 -0
- package/src/database/drivers/mssql/sql/create-table.js +4 -0
- package/src/database/drivers/mssql/sql/delete.js +19 -0
- package/src/database/drivers/mssql/sql/drop-database.js +36 -0
- package/src/database/drivers/mssql/sql/drop-table.js +4 -0
- package/src/database/drivers/mssql/sql/insert.js +4 -0
- package/src/database/drivers/mssql/sql/update.js +31 -0
- package/src/database/drivers/mssql/sql/upsert.js +23 -0
- package/src/database/drivers/mssql/structure-sql.js +120 -0
- package/src/database/drivers/mssql/table.js +145 -0
- package/src/database/drivers/mysql/column.js +112 -0
- package/src/database/drivers/mysql/columns-index.js +22 -0
- package/src/database/drivers/mysql/foreign-key.js +12 -0
- package/src/database/drivers/mysql/index.js +473 -0
- package/src/database/drivers/mysql/options.js +34 -0
- package/src/database/drivers/mysql/query-parser.js +6 -0
- package/src/database/drivers/mysql/query.js +37 -0
- package/src/database/drivers/mysql/sql/alter-table.js +6 -0
- package/src/database/drivers/mysql/sql/create-database.js +39 -0
- package/src/database/drivers/mysql/sql/create-index.js +6 -0
- package/src/database/drivers/mysql/sql/create-table.js +6 -0
- package/src/database/drivers/mysql/sql/delete.js +21 -0
- package/src/database/drivers/mysql/sql/drop-database.js +6 -0
- package/src/database/drivers/mysql/sql/drop-table.js +6 -0
- package/src/database/drivers/mysql/sql/insert.js +6 -0
- package/src/database/drivers/mysql/sql/update.js +33 -0
- package/src/database/drivers/mysql/sql/upsert.js +13 -0
- package/src/database/drivers/mysql/structure-sql.js +93 -0
- package/src/database/drivers/mysql/table.js +121 -0
- package/src/database/drivers/pgsql/column.js +90 -0
- package/src/database/drivers/pgsql/columns-index.js +6 -0
- package/src/database/drivers/pgsql/foreign-key.js +12 -0
- package/src/database/drivers/pgsql/index.js +441 -0
- package/src/database/drivers/pgsql/options.js +32 -0
- package/src/database/drivers/pgsql/query-parser.js +6 -0
- package/src/database/drivers/pgsql/sql/alter-table.js +6 -0
- package/src/database/drivers/pgsql/sql/create-database.js +38 -0
- package/src/database/drivers/pgsql/sql/create-index.js +6 -0
- package/src/database/drivers/pgsql/sql/create-table.js +6 -0
- package/src/database/drivers/pgsql/sql/delete.js +21 -0
- package/src/database/drivers/pgsql/sql/drop-database.js +6 -0
- package/src/database/drivers/pgsql/sql/drop-table.js +6 -0
- package/src/database/drivers/pgsql/sql/insert.js +6 -0
- package/src/database/drivers/pgsql/sql/update.js +33 -0
- package/src/database/drivers/pgsql/sql/upsert.js +14 -0
- package/src/database/drivers/pgsql/structure-sql.js +126 -0
- package/src/database/drivers/pgsql/table.js +135 -0
- package/src/database/drivers/sqlite/base.js +509 -0
- package/src/database/drivers/sqlite/column.js +75 -0
- package/src/database/drivers/sqlite/columns-index.js +30 -0
- package/src/database/drivers/sqlite/connection-sql-js.js +46 -0
- package/src/database/drivers/sqlite/foreign-key.js +24 -0
- package/src/database/drivers/sqlite/index.js +394 -0
- package/src/database/drivers/sqlite/index.native.js +72 -0
- package/src/database/drivers/sqlite/index.web.js +99 -0
- package/src/database/drivers/sqlite/options.js +32 -0
- package/src/database/drivers/sqlite/query-parser.js +6 -0
- package/src/database/drivers/sqlite/query.js +35 -0
- package/src/database/drivers/sqlite/query.native.js +35 -0
- package/src/database/drivers/sqlite/query.web.js +49 -0
- package/src/database/drivers/sqlite/sql/alter-table.js +187 -0
- package/src/database/drivers/sqlite/sql/create-index.js +6 -0
- package/src/database/drivers/sqlite/sql/create-table.js +6 -0
- package/src/database/drivers/sqlite/sql/delete.js +26 -0
- package/src/database/drivers/sqlite/sql/drop-table.js +6 -0
- package/src/database/drivers/sqlite/sql/insert.js +6 -0
- package/src/database/drivers/sqlite/sql/update.js +33 -0
- package/src/database/drivers/sqlite/sql/upsert.js +14 -0
- package/src/database/drivers/sqlite/structure-sql.js +56 -0
- package/src/database/drivers/sqlite/table-rebuilder.js +96 -0
- package/src/database/drivers/sqlite/table.js +131 -0
- package/src/database/drivers/structure-sql/utils.js +35 -0
- package/src/database/handler.js +13 -0
- package/src/database/initializer-from-require-context.js +101 -0
- package/src/database/migration/index.js +438 -0
- package/src/database/migrator/files-finder.js +55 -0
- package/src/database/migrator/types.js +31 -0
- package/src/database/migrator.js +557 -0
- package/src/database/pool/async-tracked-multi-connection.js +1164 -0
- package/src/database/pool/base-methods-forward.js +52 -0
- package/src/database/pool/base.js +380 -0
- package/src/database/pool/single-multi-use.js +118 -0
- package/src/database/query/alter-table-base.js +104 -0
- package/src/database/query/base.js +49 -0
- package/src/database/query/create-database-base.js +42 -0
- package/src/database/query/create-index-base.js +117 -0
- package/src/database/query/create-table-base.js +205 -0
- package/src/database/query/delete-base.js +19 -0
- package/src/database/query/drop-database-base.js +38 -0
- package/src/database/query/drop-table-base.js +58 -0
- package/src/database/query/from-base.js +36 -0
- package/src/database/query/from-plain.js +16 -0
- package/src/database/query/from-table.js +18 -0
- package/src/database/query/index.js +533 -0
- package/src/database/query/insert-base.js +172 -0
- package/src/database/query/join-base.js +43 -0
- package/src/database/query/join-object.js +167 -0
- package/src/database/query/join-plain.js +18 -0
- package/src/database/query/join-tracker.js +93 -0
- package/src/database/query/model-class-query.js +1577 -0
- package/src/database/query/order-base.js +33 -0
- package/src/database/query/order-column.js +77 -0
- package/src/database/query/order-plain.js +28 -0
- package/src/database/query/preloader/belongs-to.js +267 -0
- package/src/database/query/preloader/ensure-model-class-initialized.js +18 -0
- package/src/database/query/preloader/has-many.js +316 -0
- package/src/database/query/preloader/has-one.js +123 -0
- package/src/database/query/preloader/selection.js +152 -0
- package/src/database/query/preloader.js +201 -0
- package/src/database/query/query-data.js +305 -0
- package/src/database/query/select-base.js +30 -0
- package/src/database/query/select-plain.js +18 -0
- package/src/database/query/select-table-and-column.js +28 -0
- package/src/database/query/update-base.js +41 -0
- package/src/database/query/upsert-base.js +103 -0
- package/src/database/query/where-base.js +38 -0
- package/src/database/query/where-combinator.js +31 -0
- package/src/database/query/where-hash.js +77 -0
- package/src/database/query/where-model-class-hash.js +505 -0
- package/src/database/query/where-not.js +23 -0
- package/src/database/query/where-plain.js +20 -0
- package/src/database/query/with-count.js +219 -0
- package/src/database/query-parser/base-query-parser.js +40 -0
- package/src/database/query-parser/from-parser.js +49 -0
- package/src/database/query-parser/group-parser.js +55 -0
- package/src/database/query-parser/joins-parser.js +37 -0
- package/src/database/query-parser/limit-parser.js +77 -0
- package/src/database/query-parser/options.js +94 -0
- package/src/database/query-parser/order-parser.js +45 -0
- package/src/database/query-parser/select-parser.js +67 -0
- package/src/database/query-parser/where-parser.js +46 -0
- package/src/database/record/acts-as-list.js +374 -0
- package/src/database/record/attachments/download.js +49 -0
- package/src/database/record/attachments/handle.js +188 -0
- package/src/database/record/attachments/normalize-input.js +213 -0
- package/src/database/record/attachments/storage-drivers/filesystem.js +114 -0
- package/src/database/record/attachments/storage-drivers/native.js +146 -0
- package/src/database/record/attachments/storage-drivers/s3.js +245 -0
- package/src/database/record/attachments/store.js +591 -0
- package/src/database/record/index.js +4094 -0
- package/src/database/record/instance-relationships/base.js +289 -0
- package/src/database/record/instance-relationships/belongs-to.js +84 -0
- package/src/database/record/instance-relationships/has-many.js +284 -0
- package/src/database/record/instance-relationships/has-one.js +117 -0
- package/src/database/record/record-not-found-error.js +3 -0
- package/src/database/record/relationships/base.js +195 -0
- package/src/database/record/relationships/belongs-to.js +57 -0
- package/src/database/record/relationships/has-many.js +46 -0
- package/src/database/record/relationships/has-one.js +46 -0
- package/src/database/record/state-machine.js +278 -0
- package/src/database/record/user-module.js +43 -0
- package/src/database/record/validators/base.js +27 -0
- package/src/database/record/validators/format.js +50 -0
- package/src/database/record/validators/presence.js +24 -0
- package/src/database/record/validators/uniqueness.js +124 -0
- package/src/database/table-data/index.js +241 -0
- package/src/database/table-data/table-column.js +416 -0
- package/src/database/table-data/table-foreign-key.js +69 -0
- package/src/database/table-data/table-index.js +46 -0
- package/src/database/table-data/table-reference.js +13 -0
- package/src/database/use-database.js +48 -0
- package/src/environment-handlers/base.js +561 -0
- package/src/environment-handlers/browser.js +338 -0
- package/src/environment-handlers/node/cli/commands/background-jobs-main.js +21 -0
- package/src/environment-handlers/node/cli/commands/background-jobs-runner.js +24 -0
- package/src/environment-handlers/node/cli/commands/background-jobs-worker.js +47 -0
- package/src/environment-handlers/node/cli/commands/beacon.js +21 -0
- package/src/environment-handlers/node/cli/commands/cli-command-context.js +31 -0
- package/src/environment-handlers/node/cli/commands/console.js +149 -0
- package/src/environment-handlers/node/cli/commands/db/schema/dump.js +43 -0
- package/src/environment-handlers/node/cli/commands/db/schema/load.js +69 -0
- package/src/environment-handlers/node/cli/commands/db/seed.js +79 -0
- package/src/environment-handlers/node/cli/commands/destroy/migration.js +47 -0
- package/src/environment-handlers/node/cli/commands/generate/base-models.js +396 -0
- package/src/environment-handlers/node/cli/commands/generate/frontend-models.js +872 -0
- package/src/environment-handlers/node/cli/commands/generate/migration.js +45 -0
- package/src/environment-handlers/node/cli/commands/generate/model.js +45 -0
- package/src/environment-handlers/node/cli/commands/init.js +68 -0
- package/src/environment-handlers/node/cli/commands/routes.js +63 -0
- package/src/environment-handlers/node/cli/commands/run-script.js +85 -0
- package/src/environment-handlers/node/cli/commands/runner.js +84 -0
- package/src/environment-handlers/node/cli/commands/server.js +151 -0
- package/src/environment-handlers/node/cli/commands/test.js +118 -0
- package/src/environment-handlers/node.js +887 -0
- package/src/error-logger.js +30 -0
- package/src/frontend-model-controller.js +3491 -0
- package/src/frontend-model-resource/base-resource.js +935 -0
- package/src/frontend-models/base.js +4004 -0
- package/src/frontend-models/clear-pending-debounced-callback.js +16 -0
- package/src/frontend-models/event-hook-models.js +49 -0
- package/src/frontend-models/model-registry.js +28 -0
- package/src/frontend-models/outgoing-event-buffer.js +51 -0
- package/src/frontend-models/preloader.js +169 -0
- package/src/frontend-models/query.js +2245 -0
- package/src/frontend-models/resource-config-validation.js +56 -0
- package/src/frontend-models/resource-definition.js +399 -0
- package/src/frontend-models/transport-serialization.js +369 -0
- package/src/frontend-models/use-created-event.js +21 -0
- package/src/frontend-models/use-destroyed-event.js +148 -0
- package/src/frontend-models/use-model-class-event.js +164 -0
- package/src/frontend-models/use-updated-event.js +152 -0
- package/src/frontend-models/websocket-channel.js +494 -0
- package/src/frontend-models/websocket-publishers.js +224 -0
- package/src/http-client/header.js +17 -0
- package/src/http-client/index.js +139 -0
- package/src/http-client/request.js +94 -0
- package/src/http-client/response.js +151 -0
- package/src/http-client/websocket-client.js +27 -0
- package/src/http-server/client/index.js +507 -0
- package/src/http-server/client/params-to-object.js +152 -0
- package/src/http-server/client/request-buffer/form-data-part.js +139 -0
- package/src/http-server/client/request-buffer/header.js +19 -0
- package/src/http-server/client/request-buffer/index.js +535 -0
- package/src/http-server/client/request-parser.js +195 -0
- package/src/http-server/client/request-runner.js +321 -0
- package/src/http-server/client/request-timing.js +171 -0
- package/src/http-server/client/request.js +114 -0
- package/src/http-server/client/response.js +251 -0
- package/src/http-server/client/uploaded-file/memory-uploaded-file.js +32 -0
- package/src/http-server/client/uploaded-file/temporary-uploaded-file.js +32 -0
- package/src/http-server/client/uploaded-file/uploaded-file.js +36 -0
- package/src/http-server/client/websocket-request.js +147 -0
- package/src/http-server/client/websocket-session.js +1755 -0
- package/src/http-server/cookie.js +245 -0
- package/src/http-server/development-reloader.js +240 -0
- package/src/http-server/index.js +561 -0
- package/src/http-server/remote-address.js +77 -0
- package/src/http-server/server-client.js +222 -0
- package/src/http-server/server-lock.js +178 -0
- package/src/http-server/websocket-channel-subscribers.js +110 -0
- package/src/http-server/websocket-channel.js +137 -0
- package/src/http-server/websocket-connection.js +118 -0
- package/src/http-server/websocket-event-log-store.js +433 -0
- package/src/http-server/websocket-events-host.js +170 -0
- package/src/http-server/websocket-events.js +50 -0
- package/src/http-server/worker-handler/channel-subscriber-dispatch.js +28 -0
- package/src/http-server/worker-handler/in-process.js +155 -0
- package/src/http-server/worker-handler/index.js +370 -0
- package/src/http-server/worker-handler/worker-script.js +6 -0
- package/src/http-server/worker-handler/worker-thread.js +286 -0
- package/src/initializer.js +39 -0
- package/src/jobs/.gitkeep +1 -0
- package/src/jobs/mail-delivery.js +22 -0
- package/src/logger/base-logger.js +34 -0
- package/src/logger/console-logger.js +28 -0
- package/src/logger/file-logger.js +36 -0
- package/src/logger/outputs/array-output.js +50 -0
- package/src/logger/outputs/console-output.js +32 -0
- package/src/logger/outputs/file-output.js +55 -0
- package/src/logger/outputs/stdout-output.js +64 -0
- package/src/logger.js +507 -0
- package/src/mailer/backends/smtp.js +197 -0
- package/src/mailer/base.js +337 -0
- package/src/mailer/delivery.js +70 -0
- package/src/mailer/index.js +24 -0
- package/src/mailer.js +15 -0
- package/src/plugins/sqljs-wasm-route-controller.js +70 -0
- package/src/plugins/sqljs-wasm-route.js +71 -0
- package/src/record-payload-values.js +83 -0
- package/src/routes/app-routes.js +17 -0
- package/src/routes/base-route.js +133 -0
- package/src/routes/basic-route.js +109 -0
- package/src/routes/built-in/debug/controller.js +12 -0
- package/src/routes/built-in/errors/controller.js +7 -0
- package/src/routes/built-in/errors/not-found.ejs +1 -0
- package/src/routes/get-route.js +75 -0
- package/src/routes/hooks/frontend-model-command-route-hook.js +100 -0
- package/src/routes/index.js +50 -0
- package/src/routes/namespace-route.js +51 -0
- package/src/routes/plugin-routes.js +141 -0
- package/src/routes/post-route.js +74 -0
- package/src/routes/resolver.js +535 -0
- package/src/routes/resource-route.js +154 -0
- package/src/routes/root-route.js +11 -0
- package/src/templates/configuration.js +61 -0
- package/src/templates/generate-migration.js +11 -0
- package/src/templates/generate-model.js +6 -0
- package/src/templates/routes.js +11 -0
- package/src/testing/base-expect.js +17 -0
- package/src/testing/browser-frontend-model-event-hook-scenarios.js +520 -0
- package/src/testing/browser-test-app.js +32 -0
- package/src/testing/expect-to-change.js +55 -0
- package/src/testing/expect-utils.js +269 -0
- package/src/testing/expect.js +763 -0
- package/src/testing/request-client.js +90 -0
- package/src/testing/test-files-finder.js +364 -0
- package/src/testing/test-filter-parser.js +198 -0
- package/src/testing/test-runner.js +1168 -0
- package/src/testing/test-suite-splitter.js +177 -0
- package/src/testing/test.js +370 -0
- package/src/types/external-modules.d.ts +57 -0
- package/src/utils/backtrace-cleaner-node.js +87 -0
- package/src/utils/backtrace-cleaner.js +266 -0
- package/src/utils/ensure-error.js +15 -0
- package/src/utils/event-emitter.js +8 -0
- package/src/utils/file-exists.js +18 -0
- package/src/utils/format-value.js +101 -0
- package/src/utils/model-scope.js +56 -0
- package/src/utils/nest-callbacks.js +22 -0
- package/src/utils/plain-object.js +14 -0
- package/src/utils/ransack.js +859 -0
- package/src/utils/rest-args-error.js +14 -0
- package/src/utils/singularize-model-name.js +18 -0
- package/src/utils/split-sql-statements.js +88 -0
- package/src/utils/to-import-specifier.js +53 -0
- package/src/utils/with-tracked-stack-async-hooks.js +103 -0
- package/src/utils/with-tracked-stack.js +38 -0
- package/src/velocious-error.js +34 -0
- package/tsconfig.json +16 -0
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
3
|
+
import QueryParserOptions from "../../query-parser/options.js"
|
|
4
|
+
|
|
5
|
+
export default class VelociousDatabaseDriversMssqlOptions extends QueryParserOptions {
|
|
6
|
+
/**
|
|
7
|
+
* Runs constructor.
|
|
8
|
+
* @param {object} args - Options object.
|
|
9
|
+
* @param {import("../base.js").default} args.driver - Database driver instance.
|
|
10
|
+
*/
|
|
11
|
+
constructor({driver}) {
|
|
12
|
+
const options = {
|
|
13
|
+
driver,
|
|
14
|
+
columnQuote: "\"",
|
|
15
|
+
indexQuote: "\"",
|
|
16
|
+
stringQuote: "'",
|
|
17
|
+
tableQuote: "\""
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
super(options)
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Runs quote.
|
|
25
|
+
* @param {?} string - String.
|
|
26
|
+
* @returns {number | string} - The quote.
|
|
27
|
+
*/
|
|
28
|
+
quote(string) {
|
|
29
|
+
if (!this.driver) throw new Error("Driver not set")
|
|
30
|
+
|
|
31
|
+
return this.driver.quote(string)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Runs quote column name.
|
|
36
|
+
* @param {string} string - String.
|
|
37
|
+
* @returns {string} - The quote column name.
|
|
38
|
+
*/
|
|
39
|
+
quoteColumnName(string) {
|
|
40
|
+
if (string.includes("[") || string.includes("]")) throw new Error(`Possible SQL injection in column name: ${string}`)
|
|
41
|
+
|
|
42
|
+
return `[${string}]`
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Runs quote database name.
|
|
47
|
+
* @param {string} databaseName - Database name.
|
|
48
|
+
* @returns {string} - The quote database name.
|
|
49
|
+
*/
|
|
50
|
+
quoteDatabaseName(databaseName) {
|
|
51
|
+
if (typeof databaseName != "string") throw new Error(`Invalid database name given: ${databaseName}`)
|
|
52
|
+
if (databaseName.includes("[") || databaseName.includes("]")) throw new Error(`Possible SQL injection in database name: ${databaseName}`)
|
|
53
|
+
|
|
54
|
+
return `[${databaseName}]`
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Runs quote index name.
|
|
59
|
+
* @param {string} string - String.
|
|
60
|
+
* @returns {string} - The quote index name.
|
|
61
|
+
*/
|
|
62
|
+
quoteIndexName(string) {
|
|
63
|
+
if (string.includes("[") || string.includes("]")) throw new Error(`Possible SQL injection in index name: ${string}`)
|
|
64
|
+
|
|
65
|
+
return `[${string}]`
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Runs quote table name.
|
|
70
|
+
* @param {string} string - String.
|
|
71
|
+
* @returns {string} - The quote table name.
|
|
72
|
+
*/
|
|
73
|
+
quoteTableName(string) {
|
|
74
|
+
if (string.includes("[") || string.includes("]")) throw new Error(`Possible SQL injection in table name: ${string}`)
|
|
75
|
+
|
|
76
|
+
return `[${string}]`
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
3
|
+
import CreateDatabaseBase from "../../../query/create-database-base.js"
|
|
4
|
+
|
|
5
|
+
export default class VelociousDatabaseConnectionDriversMssqlSqlCreateDatabase extends CreateDatabaseBase {
|
|
6
|
+
/**
|
|
7
|
+
* Runs constructor.
|
|
8
|
+
* @param {object} args - Options object.
|
|
9
|
+
* @param {import("../../base.js").default} args.driver - Database driver instance.
|
|
10
|
+
* @param {string} args.databaseName - Database name.
|
|
11
|
+
* @param {boolean} [args.ifNotExists] - Whether if not exists.
|
|
12
|
+
*/
|
|
13
|
+
constructor({driver, databaseName, ifNotExists}) {
|
|
14
|
+
super({databaseName, driver})
|
|
15
|
+
this.ifNotExists = ifNotExists
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
toSql() {
|
|
19
|
+
const {databaseName} = this
|
|
20
|
+
const options = this.getOptions()
|
|
21
|
+
|
|
22
|
+
let sql = ""
|
|
23
|
+
|
|
24
|
+
if (this.ifNotExists) {
|
|
25
|
+
sql += `IF NOT EXISTS(SELECT * FROM [sys].[databases] WHERE [name] = ${options.quote(databaseName)}) BEGIN `
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
sql += `CREATE DATABASE ${options.quoteDatabaseName(databaseName)}`
|
|
29
|
+
|
|
30
|
+
if (this.ifNotExists) {
|
|
31
|
+
sql += " END"
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return [sql]
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import DeleteBase from "../../../query/delete-base.js"
|
|
2
|
+
|
|
3
|
+
export default class VelociousDatabaseConnectionDriversMssqlSqlDelete extends DeleteBase {
|
|
4
|
+
toSql() {
|
|
5
|
+
let sql = `DELETE FROM ${this.getOptions().quoteTableName(this.tableName)} WHERE `
|
|
6
|
+
let count = 0
|
|
7
|
+
|
|
8
|
+
for (let columnName in this.conditions) {
|
|
9
|
+
if (count > 0) sql += " AND "
|
|
10
|
+
|
|
11
|
+
sql += this.getOptions().quoteColumnName(columnName)
|
|
12
|
+
sql += " = "
|
|
13
|
+
sql += this.getOptions().quote(this.conditions[columnName])
|
|
14
|
+
count++
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return sql
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
3
|
+
import DropDatabaseBase from "../../../query/drop-database-base.js"
|
|
4
|
+
|
|
5
|
+
export default class VelociousDatabaseConnectionDriversMssqlSqlDropDatabase extends DropDatabaseBase {
|
|
6
|
+
/**
|
|
7
|
+
* Runs constructor.
|
|
8
|
+
* @param {object} args - Options object.
|
|
9
|
+
* @param {import("../../base.js").default} args.driver - Database driver instance.
|
|
10
|
+
* @param {string} args.databaseName - Database name.
|
|
11
|
+
* @param {boolean} [args.ifExists] - Whether if exists.
|
|
12
|
+
*/
|
|
13
|
+
constructor({driver, databaseName, ifExists}) {
|
|
14
|
+
super({databaseName, driver})
|
|
15
|
+
this.ifExists = ifExists
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
toSql() {
|
|
19
|
+
const {databaseName} = this
|
|
20
|
+
const options = this.getOptions()
|
|
21
|
+
|
|
22
|
+
let sql = ""
|
|
23
|
+
|
|
24
|
+
if (this.ifExists) {
|
|
25
|
+
sql += `IF EXISTS(SELECT * FROM [sys].[databases] WHERE [name] = ${options.quote(databaseName)}) BEGIN `
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
sql += `DROP DATABASE ${options.quoteDatabaseName(databaseName)}`
|
|
29
|
+
|
|
30
|
+
if (this.ifExists) {
|
|
31
|
+
sql += " END"
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return [sql]
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import UpdateBase from "../../../query/update-base.js"
|
|
2
|
+
|
|
3
|
+
export default class VelociousDatabaseConnectionDriversMssqlSqlUpdate extends UpdateBase {
|
|
4
|
+
toSql() {
|
|
5
|
+
let sql = `UPDATE ${this.getOptions().quoteTableName(this.tableName)} SET `
|
|
6
|
+
let count = 0
|
|
7
|
+
|
|
8
|
+
for (let columnName in this.data) {
|
|
9
|
+
if (count > 0) sql += ", "
|
|
10
|
+
|
|
11
|
+
sql += this.getOptions().quoteColumnName(columnName)
|
|
12
|
+
sql += " = "
|
|
13
|
+
sql += this.formatValue(this.data[columnName])
|
|
14
|
+
count++
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
sql += " WHERE "
|
|
18
|
+
count = 0
|
|
19
|
+
|
|
20
|
+
for (let columnName in this.conditions) {
|
|
21
|
+
if (count > 0) sql += " AND "
|
|
22
|
+
|
|
23
|
+
sql += this.getOptions().quoteColumnName(columnName)
|
|
24
|
+
sql += " = "
|
|
25
|
+
sql += this.formatValue(this.conditions[columnName])
|
|
26
|
+
count++
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return sql
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
3
|
+
import UpsertBase from "../../../query/upsert-base.js"
|
|
4
|
+
|
|
5
|
+
export default class VelociousDatabaseConnectionDriversMssqlSqlUpsert extends UpsertBase {
|
|
6
|
+
toSql() {
|
|
7
|
+
const sourceColumnsSql = this.dataColumns().map((columnName) => {
|
|
8
|
+
return `${this.formatColumnValue(columnName)} AS ${this.quotedColumn(columnName)}`
|
|
9
|
+
}).join(", ")
|
|
10
|
+
const conflictSql = this.conflictColumns.map((columnName) => {
|
|
11
|
+
return `target.${this.quotedColumn(columnName)} = source.${this.quotedColumn(columnName)}`
|
|
12
|
+
}).join(" AND ")
|
|
13
|
+
const updateSql = this.updateColumns.map((columnName) => {
|
|
14
|
+
return `${this.quotedColumn(columnName)} = source.${this.quotedColumn(columnName)}`
|
|
15
|
+
}).join(", ")
|
|
16
|
+
const insertColumnsSql = this.dataColumns().map((columnName) => this.quotedColumn(columnName)).join(", ")
|
|
17
|
+
const insertValuesSql = this.dataColumns().map((columnName) => `source.${this.quotedColumn(columnName)}`).join(", ")
|
|
18
|
+
|
|
19
|
+
// HOLDLOCK prevents the race where two concurrent MERGEs both
|
|
20
|
+
// see NOT MATCHED and both try to INSERT, causing a PK violation.
|
|
21
|
+
return `MERGE ${this.quotedTableName()} WITH (HOLDLOCK) AS target USING (SELECT ${sourceColumnsSql}) AS source ON ${conflictSql} WHEN MATCHED THEN UPDATE SET ${updateSql} WHEN NOT MATCHED THEN INSERT (${insertColumnsSql}) VALUES (${insertValuesSql});`
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
3
|
+
import {normalizeCreateStatement, normalizeSqlStatement} from "../structure-sql/utils.js"
|
|
4
|
+
|
|
5
|
+
export default class VelociousDatabaseDriversMssqlStructureSql {
|
|
6
|
+
/**
|
|
7
|
+
* Runs constructor.
|
|
8
|
+
* @param {object} args - Options object.
|
|
9
|
+
* @param {import("../base.js").default} args.driver - Database driver instance.
|
|
10
|
+
*/
|
|
11
|
+
constructor({driver}) {
|
|
12
|
+
this.driver = driver
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Runs to sql.
|
|
17
|
+
* @returns {Promise<string | null>} - Resolves with SQL string.
|
|
18
|
+
*/
|
|
19
|
+
async toSql() {
|
|
20
|
+
const {driver} = this
|
|
21
|
+
const rows = await driver.query("SELECT TABLE_NAME AS table_name, TABLE_TYPE AS table_type FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dbo' ORDER BY TABLE_TYPE, TABLE_NAME")
|
|
22
|
+
const statements = []
|
|
23
|
+
|
|
24
|
+
for (const row of rows) {
|
|
25
|
+
const tableNameValue = row.table_name || row.TABLE_NAME
|
|
26
|
+
const tableTypeValue = row.table_type || row.TABLE_TYPE
|
|
27
|
+
const tableName = tableNameValue ? String(tableNameValue) : ""
|
|
28
|
+
const tableType = tableTypeValue ? String(tableTypeValue) : ""
|
|
29
|
+
|
|
30
|
+
if (!tableName || !tableType) continue
|
|
31
|
+
|
|
32
|
+
if (tableType == "BASE TABLE") {
|
|
33
|
+
const columns = await driver.query(`SELECT COLUMN_NAME AS column_name, DATA_TYPE AS data_type, IS_NULLABLE AS is_nullable, COLUMN_DEFAULT AS column_default, CHARACTER_MAXIMUM_LENGTH AS character_maximum_length, NUMERIC_PRECISION AS numeric_precision, NUMERIC_SCALE AS numeric_scale FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'dbo' AND TABLE_NAME = ${driver.quote(tableName)} ORDER BY ORDINAL_POSITION`)
|
|
34
|
+
const primaryKeys = await driver.query(`SELECT kcu.COLUMN_NAME AS column_name FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE kcu ON tc.CONSTRAINT_NAME = kcu.CONSTRAINT_NAME WHERE tc.CONSTRAINT_TYPE = 'PRIMARY KEY' AND tc.TABLE_SCHEMA = 'dbo' AND tc.TABLE_NAME = ${driver.quote(tableName)} ORDER BY kcu.ORDINAL_POSITION`)
|
|
35
|
+
const columnSql = columns
|
|
36
|
+
.map((column) => this._columnDefinition(column))
|
|
37
|
+
.filter((column) => Boolean(column))
|
|
38
|
+
const primaryKeyColumns = primaryKeys
|
|
39
|
+
.map((primaryKeyRow) => primaryKeyRow.column_name || primaryKeyRow.COLUMN_NAME)
|
|
40
|
+
.filter((column) => Boolean(column))
|
|
41
|
+
|
|
42
|
+
if (primaryKeyColumns.length > 0) {
|
|
43
|
+
columnSql.push(`PRIMARY KEY (${primaryKeyColumns.map((name) => driver.quoteColumn(String(name))).join(", ")})`)
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if (columnSql.length == 0) continue
|
|
47
|
+
|
|
48
|
+
statements.push(normalizeSqlStatement(`CREATE TABLE ${driver.quoteTable(tableName)} (${columnSql.join(", ")})`))
|
|
49
|
+
} else if (tableType == "VIEW") {
|
|
50
|
+
const viewRows = await driver.query(`SELECT m.definition AS definition FROM sys.sql_modules m JOIN sys.objects o ON m.object_id = o.object_id WHERE o.type = 'V' AND o.name = ${driver.quote(tableName)}`)
|
|
51
|
+
const viewDefValue = viewRows?.[0]?.definition || viewRows?.[0]?.DEFINITION
|
|
52
|
+
const viewDef = viewDefValue ? String(viewDefValue) : ""
|
|
53
|
+
|
|
54
|
+
if (!viewDef) continue
|
|
55
|
+
|
|
56
|
+
const createStatement = normalizeCreateStatement({
|
|
57
|
+
db: driver,
|
|
58
|
+
statement: viewDef,
|
|
59
|
+
objectName: tableName,
|
|
60
|
+
type: "VIEW"
|
|
61
|
+
})
|
|
62
|
+
|
|
63
|
+
statements.push(normalizeSqlStatement(createStatement))
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
if (statements.length == 0) return null
|
|
68
|
+
|
|
69
|
+
return `${statements.join("\n\n")}\n`
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Runs column definition.
|
|
74
|
+
* @param {Record<string, ?>} column - Column.
|
|
75
|
+
* @returns {string | null} - The column definition.
|
|
76
|
+
*/
|
|
77
|
+
_columnDefinition(column) {
|
|
78
|
+
const {driver} = this
|
|
79
|
+
const columnNameValue = column.column_name || column.COLUMN_NAME
|
|
80
|
+
const dataTypeValue = column.data_type || column.DATA_TYPE
|
|
81
|
+
const columnName = columnNameValue ? String(columnNameValue) : ""
|
|
82
|
+
const dataType = dataTypeValue ? String(dataTypeValue) : ""
|
|
83
|
+
|
|
84
|
+
if (!columnName || !dataType) return null
|
|
85
|
+
|
|
86
|
+
let typeSql = dataType
|
|
87
|
+
const charLengthValue = column.character_maximum_length || column.CHARACTER_MAXIMUM_LENGTH
|
|
88
|
+
const numericPrecisionValue = column.numeric_precision || column.NUMERIC_PRECISION
|
|
89
|
+
const numericScaleValue = column.numeric_scale || column.NUMERIC_SCALE
|
|
90
|
+
const charLength = charLengthValue === undefined || charLengthValue === null ? null : Number(charLengthValue)
|
|
91
|
+
const numericPrecision = numericPrecisionValue === undefined || numericPrecisionValue === null ? null : Number(numericPrecisionValue)
|
|
92
|
+
const numericScale = numericScaleValue === undefined || numericScaleValue === null ? null : Number(numericScaleValue)
|
|
93
|
+
|
|
94
|
+
if ((dataType == "varchar" || dataType == "nvarchar" || dataType == "char" || dataType == "nchar")) {
|
|
95
|
+
if (charLength == -1) {
|
|
96
|
+
typeSql = `${dataType}(max)`
|
|
97
|
+
} else if (charLength) {
|
|
98
|
+
typeSql = `${dataType}(${charLength})`
|
|
99
|
+
}
|
|
100
|
+
} else if ((dataType == "decimal" || dataType == "numeric") && numericPrecision) {
|
|
101
|
+
if (numericScale != null) {
|
|
102
|
+
typeSql = `${dataType}(${numericPrecision}, ${numericScale})`
|
|
103
|
+
} else {
|
|
104
|
+
typeSql = `${dataType}(${numericPrecision})`
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
const parts = [`${driver.quoteColumn(columnName)} ${typeSql}`]
|
|
109
|
+
const defaultValue = column.column_default || column.COLUMN_DEFAULT
|
|
110
|
+
|
|
111
|
+
if (defaultValue) parts.push(`DEFAULT ${defaultValue}`)
|
|
112
|
+
|
|
113
|
+
const isNullable = column.is_nullable || column.IS_NULLABLE
|
|
114
|
+
|
|
115
|
+
if (isNullable == "NO") parts.push("NOT NULL")
|
|
116
|
+
|
|
117
|
+
return parts.join(" ")
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
3
|
+
import BaseTable from "../base-table.js"
|
|
4
|
+
import Column from "./column.js"
|
|
5
|
+
import ColumnsIndex from "./columns-index.js"
|
|
6
|
+
import {digg} from "diggerize"
|
|
7
|
+
import ForeignKey from "./foreign-key.js"
|
|
8
|
+
|
|
9
|
+
export default class VelociousDatabaseDriversMssqlTable extends BaseTable {
|
|
10
|
+
/**
|
|
11
|
+
* Runs constructor.
|
|
12
|
+
* @param {import("../base.js").default} driver - Database driver instance.
|
|
13
|
+
* @param {Record<string, string>} data - Data payload.
|
|
14
|
+
*/
|
|
15
|
+
constructor(driver, data) {
|
|
16
|
+
super()
|
|
17
|
+
this.data = data
|
|
18
|
+
this.driver = driver
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
async getColumns() {
|
|
22
|
+
return await this.getDriver()._cachedTableSchemaMetadata(this.getName(), "columns", async () => {
|
|
23
|
+
const result = await this.driver.query(`
|
|
24
|
+
SELECT
|
|
25
|
+
*,
|
|
26
|
+
COLUMNPROPERTY(object_id(TABLE_SCHEMA + '.' + TABLE_NAME), COLUMN_NAME, 'IsIdentity') AS isIdentity
|
|
27
|
+
FROM [INFORMATION_SCHEMA].[COLUMNS]
|
|
28
|
+
WHERE [TABLE_NAME] = ${this.driver.quote(this.getName())}
|
|
29
|
+
`)
|
|
30
|
+
const columns = []
|
|
31
|
+
|
|
32
|
+
for (const data of result) {
|
|
33
|
+
const column = new Column(this, data)
|
|
34
|
+
|
|
35
|
+
columns.push(column)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return columns
|
|
39
|
+
})
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
async getForeignKeys() {
|
|
43
|
+
return await this.getDriver()._cachedTableSchemaMetadata(this.getName(), "foreignKeys", async () => {
|
|
44
|
+
const sql = `
|
|
45
|
+
SELECT
|
|
46
|
+
fk.name AS ForeignKeyName,
|
|
47
|
+
tp.name AS ParentTable,
|
|
48
|
+
ref.name AS ReferencedTable,
|
|
49
|
+
cp.name AS ParentColumn,
|
|
50
|
+
cref.name AS ReferencedColumn,
|
|
51
|
+
tp.name AS TableName
|
|
52
|
+
FROM sys.foreign_keys fk
|
|
53
|
+
INNER JOIN sys.foreign_key_columns fkc
|
|
54
|
+
ON fkc.constraint_object_id = fk.object_id
|
|
55
|
+
INNER JOIN sys.tables tp
|
|
56
|
+
ON fkc.parent_object_id = tp.object_id
|
|
57
|
+
INNER JOIN sys.columns cp
|
|
58
|
+
ON fkc.parent_object_id = cp.object_id
|
|
59
|
+
AND fkc.parent_column_id = cp.column_id
|
|
60
|
+
INNER JOIN sys.tables ref
|
|
61
|
+
ON fkc.referenced_object_id = ref.object_id
|
|
62
|
+
INNER JOIN sys.columns cref
|
|
63
|
+
ON fkc.referenced_object_id = cref.object_id
|
|
64
|
+
AND fkc.referenced_column_id = cref.column_id
|
|
65
|
+
WHERE tp.name = ${this.driver.quote(this.getName())}
|
|
66
|
+
ORDER BY ForeignKeyName, ParentTable, ReferencedTable;
|
|
67
|
+
`
|
|
68
|
+
|
|
69
|
+
const foreignKeyRows = await this.driver.query(sql)
|
|
70
|
+
const foreignKeys = []
|
|
71
|
+
|
|
72
|
+
for (const foreignKeyRow of foreignKeyRows) {
|
|
73
|
+
const foreignKey = new ForeignKey(foreignKeyRow)
|
|
74
|
+
|
|
75
|
+
foreignKeys.push(foreignKey)
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
return foreignKeys
|
|
79
|
+
})
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
async getIndexes() {
|
|
83
|
+
return await this.getDriver()._cachedTableSchemaMetadata(this.getName(), "indexes", async () => {
|
|
84
|
+
const options = this.getOptions()
|
|
85
|
+
const sql = `
|
|
86
|
+
SELECT
|
|
87
|
+
sys.tables.name AS TableName,
|
|
88
|
+
sys.columns.name AS ColumnName,
|
|
89
|
+
sys.indexes.name AS index_name,
|
|
90
|
+
sys.indexes.type_desc AS IndexType,
|
|
91
|
+
sys.index_columns.is_included_column AS IsIncludedColumn,
|
|
92
|
+
sys.indexes.is_unique,
|
|
93
|
+
sys.indexes.is_primary_key,
|
|
94
|
+
sys.indexes.is_unique_constraint
|
|
95
|
+
FROM sys.indexes
|
|
96
|
+
INNER JOIN sys.index_columns ON sys.indexes.object_id = sys.index_columns.object_id AND sys.indexes.index_id = sys.index_columns.index_id
|
|
97
|
+
INNER JOIN sys.columns ON sys.index_columns.object_id = sys.columns.object_id AND sys.index_columns.column_id = sys.columns.column_id
|
|
98
|
+
INNER JOIN sys.tables ON sys.indexes.object_id = sys.tables.object_id
|
|
99
|
+
WHERE
|
|
100
|
+
sys.tables.name = ${options.quote(this.getName())}
|
|
101
|
+
ORDER BY
|
|
102
|
+
sys.indexes.name,
|
|
103
|
+
sys.index_columns.key_ordinal
|
|
104
|
+
`
|
|
105
|
+
|
|
106
|
+
const rows = await this.getDriver().query(sql)
|
|
107
|
+
const indexes = []
|
|
108
|
+
|
|
109
|
+
for (const row of rows) {
|
|
110
|
+
const index = new ColumnsIndex(this, row)
|
|
111
|
+
|
|
112
|
+
indexes.push(index)
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
return indexes
|
|
116
|
+
})
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Runs get name.
|
|
121
|
+
* @returns {string} - The table name.
|
|
122
|
+
*/
|
|
123
|
+
getName() {
|
|
124
|
+
return /** Narrows the runtime value to the documented type. @type {string} */ (digg(this.data, "TABLE_NAME"))
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Runs truncate.
|
|
129
|
+
* @param {{cascade: boolean}} [args] - Truncate options.
|
|
130
|
+
* @returns {Promise<Array<Record<string, ?>>>} - Resolves with the truncate.
|
|
131
|
+
*/
|
|
132
|
+
async truncate(args) { // eslint-disable-line no-unused-vars
|
|
133
|
+
this.getDriver()._assertNotReadOnly()
|
|
134
|
+
try {
|
|
135
|
+
return await this.getDriver().query(`TRUNCATE TABLE ${this.getOptions().quoteTableName(this.getName())}`)
|
|
136
|
+
} catch (error) {
|
|
137
|
+
if (error instanceof Error && error.message.startsWith("Query failed 'Cannot truncate table")) {
|
|
138
|
+
// Truncate table is really buggy for some reason - fall back to delete all rows instead
|
|
139
|
+
return await this.getDriver().query(`DELETE FROM ${this.getOptions().quoteTableName(this.getName())}`)
|
|
140
|
+
} else {
|
|
141
|
+
throw error
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
3
|
+
import BaseColumn from "../base-column.js"
|
|
4
|
+
import ColumnsIndex from "./columns-index.js"
|
|
5
|
+
import {digg} from "diggerize"
|
|
6
|
+
|
|
7
|
+
export default class VelociousDatabaseDriversMysqlColumn extends BaseColumn {
|
|
8
|
+
/**
|
|
9
|
+
* Runs constructor.
|
|
10
|
+
* @param {import("../base-table.js").default} table - Table.
|
|
11
|
+
* @param {Record<string, ?>} data - Data payload.
|
|
12
|
+
*/
|
|
13
|
+
constructor(table, data) {
|
|
14
|
+
super()
|
|
15
|
+
this.data = data
|
|
16
|
+
this.table = table
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
getAutoIncrement() { return digg(this, "data", "Extra").includes("auto_increment") }
|
|
20
|
+
|
|
21
|
+
async getIndexes() {
|
|
22
|
+
const options = this.getOptions()
|
|
23
|
+
const sql = `
|
|
24
|
+
SELECT
|
|
25
|
+
TABLE_SCHEMA,
|
|
26
|
+
TABLE_NAME,
|
|
27
|
+
INDEX_NAME AS index_name,
|
|
28
|
+
COLUMN_NAME,
|
|
29
|
+
SEQ_IN_INDEX,
|
|
30
|
+
NON_UNIQUE,
|
|
31
|
+
INDEX_TYPE
|
|
32
|
+
FROM INFORMATION_SCHEMA.STATISTICS
|
|
33
|
+
WHERE
|
|
34
|
+
TABLE_SCHEMA = DATABASE() AND
|
|
35
|
+
TABLE_NAME = ${options.quote(this.table.getName())} AND
|
|
36
|
+
COLUMN_NAME = ${options.quote(this.getName())}
|
|
37
|
+
`
|
|
38
|
+
const indexesRows = await this.getDriver().query(sql)
|
|
39
|
+
const indexes = []
|
|
40
|
+
|
|
41
|
+
for (const indexRow of indexesRows) {
|
|
42
|
+
if (indexRow.NON_UNIQUE == 1) {
|
|
43
|
+
indexRow.is_unique = false
|
|
44
|
+
} else {
|
|
45
|
+
indexRow.is_unique = true
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
if (indexRow.index_name == "PRIMARY") {
|
|
49
|
+
indexRow.is_primary_key = true
|
|
50
|
+
} else {
|
|
51
|
+
indexRow.is_primary_key = false
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const index = new ColumnsIndex(this.getTable(), indexRow)
|
|
55
|
+
|
|
56
|
+
indexes.push(index)
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return indexes
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
getDefault() { return digg(this, "data", "Default") }
|
|
63
|
+
|
|
64
|
+
getMaxLength() {
|
|
65
|
+
const type = digg(this, "data", "Type")
|
|
66
|
+
const match = type.match(/\((\d+)\)$/)
|
|
67
|
+
|
|
68
|
+
if (match) {
|
|
69
|
+
const maxLength = parseInt(match[1])
|
|
70
|
+
|
|
71
|
+
return maxLength
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
getName() { return digg(this, "data", "Field") }
|
|
76
|
+
getNotes() { return digg(this, "data", "Comment") || undefined }
|
|
77
|
+
|
|
78
|
+
getNull() {
|
|
79
|
+
const nullValue = digg(this, "data", "Null")
|
|
80
|
+
|
|
81
|
+
if (nullValue == "NO") {
|
|
82
|
+
return false
|
|
83
|
+
} else if (nullValue == "YES") {
|
|
84
|
+
return true
|
|
85
|
+
} else {
|
|
86
|
+
throw new Error(`Unknown null value: ${nullValue}`)
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
getPrimaryKey() { return digg(this, "data", "Key") == "PRI" }
|
|
91
|
+
|
|
92
|
+
getType() {
|
|
93
|
+
const typeHint = this.getTypeHintFromNotes()
|
|
94
|
+
|
|
95
|
+
if (typeHint == "boolean") return "boolean"
|
|
96
|
+
|
|
97
|
+
const type = digg(this, "data", "Type")
|
|
98
|
+
const tinyintMatch = type.match(/^tinyint\((\d+)\)/i)
|
|
99
|
+
|
|
100
|
+
if (tinyintMatch && tinyintMatch[1] == "1") return "boolean"
|
|
101
|
+
|
|
102
|
+
if (type.match(/^[a-z]+$/i)) {
|
|
103
|
+
return type.toLowerCase()
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
const match = type.match(/^([a-z]+)(?:\((\d+)\))*/i)
|
|
107
|
+
|
|
108
|
+
if (!match) throw new Error(`Couldn't match column type from: ${type}`)
|
|
109
|
+
|
|
110
|
+
return match[1].toLowerCase()
|
|
111
|
+
}
|
|
112
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
3
|
+
import BaseColumnsIndex from "../base-columns-index.js"
|
|
4
|
+
import {digg} from "diggerize"
|
|
5
|
+
import TableIndex from "../../table-data/table-index.js"
|
|
6
|
+
|
|
7
|
+
export default class VelociousDatabaseDriversMysqlColumnsIndex extends BaseColumnsIndex {
|
|
8
|
+
getColumnNames() {
|
|
9
|
+
const columnNames = digg(this, "data", "column_names")
|
|
10
|
+
|
|
11
|
+
if (columnNames) return columnNames
|
|
12
|
+
|
|
13
|
+
return [digg(this, "data", "COLUMN_NAME")]
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
getTableDataIndex() {
|
|
17
|
+
return new TableIndex(this.getColumnNames(), {
|
|
18
|
+
name: this.getName(),
|
|
19
|
+
unique: this.isUnique()
|
|
20
|
+
})
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
3
|
+
import BaseForeignKey from "../base-foreign-key.js"
|
|
4
|
+
import {digg} from "diggerize"
|
|
5
|
+
|
|
6
|
+
export default class VelociousDatabaseDriversMysqlForeignKey extends BaseForeignKey {
|
|
7
|
+
getColumnName() { return digg(this, "data", "COLUMN_NAME") }
|
|
8
|
+
getName() { return digg(this, "data", "CONSTRAINT_NAME") }
|
|
9
|
+
getTableName() { return digg(this, "data", "TABLE_NAME") }
|
|
10
|
+
getReferencedColumnName() { return digg(this, "data", "REFERENCED_COLUMN_NAME") }
|
|
11
|
+
getReferencedTableName() { return digg(this, "data", "REFERENCED_TABLE_NAME") }
|
|
12
|
+
}
|