velocious 1.0.431 → 1.0.433
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/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/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 +4119 -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 +939 -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/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/application.js +187 -214
- package/build/src/authorization/ability.js +250 -297
- package/build/src/authorization/base-resource.js +120 -136
- package/build/src/background-jobs/client.js +43 -47
- package/build/src/background-jobs/cron-expression.js +127 -166
- package/build/src/background-jobs/forked-runner-child.js +37 -47
- package/build/src/background-jobs/job-record.js +8 -10
- package/build/src/background-jobs/job-registry.js +72 -84
- package/build/src/background-jobs/job-runner.js +74 -81
- package/build/src/background-jobs/job.js +62 -72
- package/build/src/background-jobs/json-socket.js +65 -70
- package/build/src/background-jobs/main.js +841 -900
- package/build/src/background-jobs/normalize-error.js +12 -11
- package/build/src/background-jobs/scheduler.js +205 -247
- package/build/src/background-jobs/socket-request.js +60 -65
- package/build/src/background-jobs/status-reporter.js +86 -96
- package/build/src/background-jobs/store.js +862 -980
- package/build/src/background-jobs/types.js +2 -3
- package/build/src/background-jobs/web/authorization.js +38 -50
- package/build/src/background-jobs/web/controller.js +232 -268
- package/build/src/background-jobs/web/index.js +36 -40
- package/build/src/background-jobs/web/path-matcher.js +45 -48
- package/build/src/background-jobs/web/registry.js +9 -14
- package/build/src/background-jobs/worker.js +585 -639
- package/build/src/beacon/client.js +264 -293
- package/build/src/beacon/in-process-broker.js +20 -25
- package/build/src/beacon/in-process-client.js +104 -116
- package/build/src/beacon/server.js +110 -126
- package/build/src/beacon/types.js +2 -8
- package/build/src/cli/base-command.js +49 -57
- package/build/src/cli/browser-cli.js +37 -42
- package/build/src/cli/commands/background-jobs-main.js +5 -5
- package/build/src/cli/commands/background-jobs-runner.js +5 -5
- package/build/src/cli/commands/background-jobs-worker.js +5 -5
- package/build/src/cli/commands/beacon.js +5 -5
- package/build/src/cli/commands/console.js +10 -10
- package/build/src/cli/commands/db/base-command.js +71 -76
- package/build/src/cli/commands/db/create.js +53 -61
- package/build/src/cli/commands/db/drop.js +62 -71
- package/build/src/cli/commands/db/migrate.js +13 -15
- package/build/src/cli/commands/db/reset.js +16 -19
- package/build/src/cli/commands/db/rollback.js +12 -13
- package/build/src/cli/commands/db/schema/dump.js +9 -9
- package/build/src/cli/commands/db/schema/load.js +9 -9
- package/build/src/cli/commands/db/seed.js +9 -9
- package/build/src/cli/commands/db/tenants/check.js +32 -35
- package/build/src/cli/commands/db/tenants/create.js +26 -29
- package/build/src/cli/commands/db/tenants/migrate.js +40 -44
- package/build/src/cli/commands/destroy/migration.js +5 -5
- package/build/src/cli/commands/generate/base-models.js +5 -5
- package/build/src/cli/commands/generate/frontend-models.js +9 -9
- package/build/src/cli/commands/generate/migration.js +5 -5
- package/build/src/cli/commands/generate/model.js +5 -5
- package/build/src/cli/commands/init.js +7 -9
- package/build/src/cli/commands/routes.js +6 -6
- package/build/src/cli/commands/run-script.js +9 -9
- package/build/src/cli/commands/runner.js +9 -9
- package/build/src/cli/commands/server.js +6 -6
- package/build/src/cli/commands/test.js +6 -7
- package/build/src/cli/index.js +127 -141
- package/build/src/cli/tenant-database-command-helper.js +154 -185
- package/build/src/cli/use-browser-cli.js +15 -20
- package/build/src/configuration-resolver.js +47 -54
- package/build/src/configuration-types.d.ts +5 -3
- package/build/src/configuration-types.d.ts.map +1 -1
- package/build/src/configuration-types.js +3 -54
- package/build/src/configuration.js +2240 -2547
- package/build/src/controller.js +363 -407
- package/build/src/current-configuration.js +9 -12
- package/build/src/current.js +70 -75
- package/build/src/database/annotations-async-hooks.js +16 -22
- package/build/src/database/annotations.js +12 -18
- package/build/src/database/drivers/base-column.js +155 -179
- package/build/src/database/drivers/base-columns-index.js +69 -78
- package/build/src/database/drivers/base-foreign-key.js +89 -101
- package/build/src/database/drivers/base-table.js +124 -149
- package/build/src/database/drivers/base.js +1306 -1489
- package/build/src/database/drivers/mssql/column.js +39 -50
- package/build/src/database/drivers/mssql/columns-index.js +2 -3
- package/build/src/database/drivers/mssql/connect-connection.js +11 -9
- package/build/src/database/drivers/mssql/foreign-key.js +8 -9
- package/build/src/database/drivers/mssql/index.js +507 -587
- package/build/src/database/drivers/mssql/options.js +68 -75
- package/build/src/database/drivers/mssql/query-parser.js +2 -3
- package/build/src/database/drivers/mssql/sql/alter-table.js +2 -2
- package/build/src/database/drivers/mssql/sql/create-database.js +24 -31
- package/build/src/database/drivers/mssql/sql/create-index.js +2 -2
- package/build/src/database/drivers/mssql/sql/create-table.js +2 -2
- package/build/src/database/drivers/mssql/sql/delete.js +14 -16
- package/build/src/database/drivers/mssql/sql/drop-database.js +24 -31
- package/build/src/database/drivers/mssql/sql/drop-table.js +2 -2
- package/build/src/database/drivers/mssql/sql/insert.js +2 -2
- package/build/src/database/drivers/mssql/sql/update.js +24 -28
- package/build/src/database/drivers/mssql/sql/upsert.js +18 -20
- package/build/src/database/drivers/mssql/structure-sql.js +102 -114
- package/build/src/database/drivers/mssql/table.js +81 -96
- package/build/src/database/drivers/mysql/column.js +75 -92
- package/build/src/database/drivers/mysql/columns-index.js +16 -19
- package/build/src/database/drivers/mysql/foreign-key.js +8 -9
- package/build/src/database/drivers/mysql/index.js +396 -457
- package/build/src/database/drivers/mysql/options.js +26 -30
- package/build/src/database/drivers/mysql/query-parser.js +2 -3
- package/build/src/database/drivers/mysql/query.js +26 -29
- package/build/src/database/drivers/mysql/sql/alter-table.js +2 -3
- package/build/src/database/drivers/mysql/sql/create-database.js +23 -28
- package/build/src/database/drivers/mysql/sql/create-index.js +2 -3
- package/build/src/database/drivers/mysql/sql/create-table.js +2 -3
- package/build/src/database/drivers/mysql/sql/delete.js +14 -17
- package/build/src/database/drivers/mysql/sql/drop-database.js +2 -3
- package/build/src/database/drivers/mysql/sql/drop-table.js +2 -3
- package/build/src/database/drivers/mysql/sql/insert.js +2 -3
- package/build/src/database/drivers/mysql/sql/update.js +24 -29
- package/build/src/database/drivers/mysql/sql/upsert.js +8 -10
- package/build/src/database/drivers/mysql/structure-sql.js +79 -88
- package/build/src/database/drivers/mysql/table.js +83 -98
- package/build/src/database/drivers/pgsql/column.js +56 -72
- package/build/src/database/drivers/pgsql/columns-index.js +2 -3
- package/build/src/database/drivers/pgsql/foreign-key.js +8 -9
- package/build/src/database/drivers/pgsql/index.js +377 -438
- package/build/src/database/drivers/pgsql/options.js +25 -28
- package/build/src/database/drivers/pgsql/query-parser.js +2 -3
- package/build/src/database/drivers/pgsql/sql/alter-table.js +2 -3
- package/build/src/database/drivers/pgsql/sql/create-database.js +19 -23
- package/build/src/database/drivers/pgsql/sql/create-index.js +2 -3
- package/build/src/database/drivers/pgsql/sql/create-table.js +2 -3
- package/build/src/database/drivers/pgsql/sql/delete.js +14 -17
- package/build/src/database/drivers/pgsql/sql/drop-database.js +2 -3
- package/build/src/database/drivers/pgsql/sql/drop-table.js +2 -3
- package/build/src/database/drivers/pgsql/sql/insert.js +2 -3
- package/build/src/database/drivers/pgsql/sql/update.js +24 -29
- package/build/src/database/drivers/pgsql/sql/upsert.js +9 -11
- package/build/src/database/drivers/pgsql/structure-sql.js +108 -120
- package/build/src/database/drivers/pgsql/table.js +60 -77
- package/build/src/database/drivers/sqlite/base.js +405 -478
- package/build/src/database/drivers/sqlite/column.js +54 -69
- package/build/src/database/drivers/sqlite/columns-index.js +22 -27
- package/build/src/database/drivers/sqlite/connection-sql-js.js +35 -42
- package/build/src/database/drivers/sqlite/foreign-key.js +18 -21
- package/build/src/database/drivers/sqlite/index.js +330 -373
- package/build/src/database/drivers/sqlite/index.native.js +55 -64
- package/build/src/database/drivers/sqlite/index.web.js +69 -87
- package/build/src/database/drivers/sqlite/options.js +25 -28
- package/build/src/database/drivers/sqlite/query-parser.js +2 -3
- package/build/src/database/drivers/sqlite/query.js +21 -24
- package/build/src/database/drivers/sqlite/query.native.js +20 -25
- package/build/src/database/drivers/sqlite/query.web.js +30 -37
- package/build/src/database/drivers/sqlite/sql/alter-table.js +159 -179
- package/build/src/database/drivers/sqlite/sql/create-index.js +2 -3
- package/build/src/database/drivers/sqlite/sql/create-table.js +2 -3
- package/build/src/database/drivers/sqlite/sql/delete.js +17 -22
- package/build/src/database/drivers/sqlite/sql/drop-table.js +2 -3
- package/build/src/database/drivers/sqlite/sql/insert.js +2 -3
- package/build/src/database/drivers/sqlite/sql/update.js +24 -29
- package/build/src/database/drivers/sqlite/sql/upsert.js +9 -11
- package/build/src/database/drivers/sqlite/structure-sql.js +49 -52
- package/build/src/database/drivers/sqlite/table-rebuilder.js +62 -75
- package/build/src/database/drivers/sqlite/table.js +102 -125
- package/build/src/database/drivers/structure-sql/utils.js +14 -17
- package/build/src/database/handler.js +9 -10
- package/build/src/database/initializer-from-require-context.js +76 -87
- package/build/src/database/migration/index.js +332 -395
- package/build/src/database/migrator/files-finder.js +40 -50
- package/build/src/database/migrator/types.js +2 -30
- package/build/src/database/migrator.js +454 -526
- package/build/src/database/pool/async-tracked-multi-connection.js +997 -1147
- package/build/src/database/pool/base-methods-forward.js +40 -43
- package/build/src/database/pool/base.js +298 -343
- package/build/src/database/pool/single-multi-use.js +93 -110
- package/build/src/database/query/alter-table-base.js +84 -99
- package/build/src/database/query/base.js +39 -46
- package/build/src/database/query/create-database-base.js +25 -30
- package/build/src/database/query/create-index-base.js +75 -94
- package/build/src/database/query/create-table-base.js +151 -193
- package/build/src/database/query/delete-base.js +14 -16
- package/build/src/database/query/drop-database-base.js +23 -28
- package/build/src/database/query/drop-table-base.js +42 -53
- package/build/src/database/query/from-base.js +30 -33
- package/build/src/database/query/from-plain.js +11 -13
- package/build/src/database/query/from-table.js +13 -15
- package/build/src/database/query/index.js +410 -472
- package/build/src/database/query/insert-base.js +143 -164
- package/build/src/database/query/join-base.js +35 -40
- package/build/src/database/query/join-object.js +128 -153
- package/build/src/database/query/join-plain.js +13 -15
- package/build/src/database/query/join-tracker.js +76 -90
- package/build/src/database/query/model-class-query.js +1134 -1370
- package/build/src/database/query/order-base.js +27 -30
- package/build/src/database/query/order-column.js +44 -53
- package/build/src/database/query/order-plain.js +20 -24
- package/build/src/database/query/preloader/belongs-to.js +210 -258
- package/build/src/database/query/preloader/ensure-model-class-initialized.js +8 -9
- package/build/src/database/query/preloader/has-many.js +240 -301
- package/build/src/database/query/preloader/has-one.js +91 -117
- package/build/src/database/query/preloader/selection.js +117 -129
- package/build/src/database/query/preloader.js +160 -185
- package/build/src/database/query/query-data.js +157 -201
- package/build/src/database/query/select-base.js +25 -27
- package/build/src/database/query/select-plain.js +13 -15
- package/build/src/database/query/select-table-and-column.js +21 -25
- package/build/src/database/query/update-base.js +35 -38
- package/build/src/database/query/upsert-base.js +93 -100
- package/build/src/database/query/where-base.js +32 -35
- package/build/src/database/query/where-combinator.js +25 -28
- package/build/src/database/query/where-hash.js +61 -68
- package/build/src/database/query/where-model-class-hash.js +414 -469
- package/build/src/database/query/where-not.js +18 -20
- package/build/src/database/query/where-plain.js +15 -17
- package/build/src/database/query/with-count.js +125 -159
- package/build/src/database/query-parser/base-query-parser.js +32 -37
- package/build/src/database/query-parser/from-parser.js +36 -45
- package/build/src/database/query-parser/group-parser.js +42 -50
- package/build/src/database/query-parser/joins-parser.js +28 -33
- package/build/src/database/query-parser/limit-parser.js +67 -70
- package/build/src/database/query-parser/options.js +75 -82
- package/build/src/database/query-parser/order-parser.js +36 -40
- package/build/src/database/query-parser/select-parser.js +49 -60
- package/build/src/database/query-parser/where-parser.js +36 -41
- package/build/src/database/record/acts-as-list.js +235 -273
- package/build/src/database/record/attachments/download.js +44 -45
- package/build/src/database/record/attachments/handle.js +141 -161
- package/build/src/database/record/attachments/normalize-input.js +128 -138
- package/build/src/database/record/attachments/storage-drivers/filesystem.js +77 -91
- package/build/src/database/record/attachments/storage-drivers/native.js +112 -121
- package/build/src/database/record/attachments/storage-drivers/s3.js +177 -208
- package/build/src/database/record/attachments/store.js +467 -539
- package/build/src/database/record/index.d.ts +109 -25
- package/build/src/database/record/index.d.ts.map +1 -1
- package/build/src/database/record/index.js +3502 -3898
- package/build/src/database/record/instance-relationships/base.js +234 -268
- package/build/src/database/record/instance-relationships/belongs-to.js +58 -73
- package/build/src/database/record/instance-relationships/has-many.js +225 -264
- package/build/src/database/record/instance-relationships/has-one.js +85 -105
- package/build/src/database/record/record-not-found-error.js +3 -2
- package/build/src/database/record/relationships/base.js +144 -166
- package/build/src/database/record/relationships/belongs-to.js +44 -51
- package/build/src/database/record/relationships/has-many.js +32 -40
- package/build/src/database/record/relationships/has-one.js +32 -40
- package/build/src/database/record/state-machine.js +156 -208
- package/build/src/database/record/user-module.js +32 -38
- package/build/src/database/record/validators/base.js +22 -24
- package/build/src/database/record/validators/format.js +36 -46
- package/build/src/database/record/validators/presence.js +18 -20
- package/build/src/database/record/validators/uniqueness.js +99 -117
- package/build/src/database/table-data/index.js +199 -231
- package/build/src/database/table-data/table-column.js +338 -382
- package/build/src/database/table-data/table-foreign-key.js +57 -66
- package/build/src/database/table-data/table-index.js +29 -36
- package/build/src/database/table-data/table-reference.js +10 -10
- package/build/src/database/use-database.js +32 -40
- package/build/src/environment-handlers/base.js +484 -544
- package/build/src/environment-handlers/browser.js +241 -294
- package/build/src/environment-handlers/node/cli/commands/background-jobs-main.js +16 -19
- package/build/src/environment-handlers/node/cli/commands/background-jobs-runner.js +18 -21
- package/build/src/environment-handlers/node/cli/commands/background-jobs-worker.js +22 -29
- package/build/src/environment-handlers/node/cli/commands/beacon.js +16 -19
- package/build/src/environment-handlers/node/cli/commands/cli-command-context.js +14 -15
- package/build/src/environment-handlers/node/cli/commands/console.js +99 -120
- package/build/src/environment-handlers/node/cli/commands/db/schema/dump.js +34 -39
- package/build/src/environment-handlers/node/cli/commands/db/schema/load.js +57 -63
- package/build/src/environment-handlers/node/cli/commands/db/seed.js +51 -63
- package/build/src/environment-handlers/node/cli/commands/destroy/migration.js +32 -40
- 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 +326 -358
- package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.d.ts +10 -10
- package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.d.ts.map +1 -1
- package/build/src/environment-handlers/node/cli/commands/generate/frontend-models.js +729 -844
- package/build/src/environment-handlers/node/cli/commands/generate/migration.js +34 -38
- package/build/src/environment-handlers/node/cli/commands/generate/model.js +34 -38
- package/build/src/environment-handlers/node/cli/commands/init.js +56 -61
- package/build/src/environment-handlers/node/cli/commands/routes.js +51 -59
- package/build/src/environment-handlers/node/cli/commands/run-script.js +54 -68
- package/build/src/environment-handlers/node/cli/commands/runner.js +56 -74
- package/build/src/environment-handlers/node/cli/commands/server.js +93 -106
- package/build/src/environment-handlers/node/cli/commands/test.js +97 -113
- package/build/src/environment-handlers/node.js +753 -874
- package/build/src/error-logger.js +22 -21
- package/build/src/frontend-model-controller.js +2791 -3291
- package/build/src/frontend-model-resource/base-resource.d.ts +8 -3
- package/build/src/frontend-model-resource/base-resource.d.ts.map +1 -1
- package/build/src/frontend-model-resource/base-resource.js +770 -865
- package/build/src/frontend-models/base.js +3136 -3593
- package/build/src/frontend-models/clear-pending-debounced-callback.js +7 -8
- package/build/src/frontend-models/event-hook-models.js +16 -21
- package/build/src/frontend-models/model-registry.js +9 -11
- package/build/src/frontend-models/outgoing-event-buffer.js +10 -17
- package/build/src/frontend-models/preloader.js +131 -149
- package/build/src/frontend-models/query.js +1557 -1855
- package/build/src/frontend-models/resource-config-validation.js +27 -37
- package/build/src/frontend-models/resource-definition.d.ts +6 -7
- package/build/src/frontend-models/resource-definition.d.ts.map +1 -1
- package/build/src/frontend-models/resource-definition.js +237 -291
- package/build/src/frontend-models/transport-serialization.js +203 -266
- package/build/src/frontend-models/use-created-event.js +5 -7
- package/build/src/frontend-models/use-destroyed-event.js +80 -93
- package/build/src/frontend-models/use-model-class-event.js +79 -91
- package/build/src/frontend-models/use-updated-event.js +84 -97
- package/build/src/frontend-models/websocket-channel.js +381 -441
- package/build/src/frontend-models/websocket-publishers.js +142 -175
- package/build/src/http-client/header.js +13 -14
- package/build/src/http-client/index.js +116 -132
- package/build/src/http-client/request.js +71 -87
- package/build/src/http-client/response.js +122 -140
- package/build/src/http-client/websocket-client.js +15 -17
- package/build/src/http-server/client/index.js +409 -465
- package/build/src/http-server/client/params-to-object.js +124 -135
- package/build/src/http-server/client/request-buffer/form-data-part.js +111 -132
- package/build/src/http-server/client/request-buffer/header.js +15 -16
- package/build/src/http-server/client/request-buffer/index.js +446 -506
- package/build/src/http-server/client/request-parser.js +163 -186
- package/build/src/http-server/client/request-runner.js +226 -259
- package/build/src/http-server/client/request-timing.js +132 -151
- package/build/src/http-server/client/request.js +96 -108
- package/build/src/http-server/client/response.js +213 -235
- package/build/src/http-server/client/uploaded-file/memory-uploaded-file.js +25 -29
- package/build/src/http-server/client/uploaded-file/temporary-uploaded-file.js +25 -29
- package/build/src/http-server/client/uploaded-file/uploaded-file.js +33 -33
- package/build/src/http-server/client/websocket-request.js +114 -137
- package/build/src/http-server/client/websocket-session.js +1452 -1657
- package/build/src/http-server/cookie.js +216 -236
- package/build/src/http-server/development-reloader.js +190 -221
- package/build/src/http-server/index.js +451 -525
- package/build/src/http-server/remote-address.js +38 -50
- package/build/src/http-server/server-client.js +181 -208
- package/build/src/http-server/server-lock.js +153 -167
- package/build/src/http-server/websocket-channel-subscribers.js +81 -93
- package/build/src/http-server/websocket-channel.js +104 -117
- package/build/src/http-server/websocket-connection.js +96 -104
- package/build/src/http-server/websocket-event-log-store.js +350 -404
- package/build/src/http-server/websocket-events-host.js +145 -164
- package/build/src/http-server/websocket-events.js +47 -47
- package/build/src/http-server/worker-handler/channel-subscriber-dispatch.js +13 -14
- package/build/src/http-server/worker-handler/in-process.js +123 -141
- package/build/src/http-server/worker-handler/index.js +313 -349
- package/build/src/http-server/worker-handler/worker-script.js +4 -5
- package/build/src/http-server/worker-handler/worker-thread.js +240 -269
- package/build/src/initializer.js +31 -36
- package/build/src/jobs/mail-delivery.js +13 -15
- package/build/src/logger/base-logger.js +24 -26
- package/build/src/logger/console-logger.js +21 -23
- package/build/src/logger/file-logger.js +29 -31
- package/build/src/logger/outputs/array-output.js +37 -42
- package/build/src/logger/outputs/console-output.js +20 -24
- package/build/src/logger/outputs/file-output.js +43 -48
- package/build/src/logger/outputs/stdout-output.js +39 -48
- package/build/src/logger.js +338 -394
- package/build/src/mailer/backends/smtp.js +134 -163
- package/build/src/mailer/base.js +211 -251
- package/build/src/mailer/delivery.js +56 -64
- package/build/src/mailer/index.js +4 -22
- package/build/src/mailer.js +4 -13
- package/build/src/plugins/sqljs-wasm-route-controller.js +42 -52
- package/build/src/plugins/sqljs-wasm-route.js +28 -38
- package/build/src/record-payload-values.js +25 -28
- package/build/src/routes/app-routes.js +12 -14
- package/build/src/routes/base-route.js +112 -130
- package/build/src/routes/basic-route.js +83 -102
- package/build/src/routes/built-in/debug/controller.js +10 -10
- package/build/src/routes/built-in/errors/controller.js +5 -5
- package/build/src/routes/get-route.js +50 -63
- package/build/src/routes/hooks/frontend-model-command-route-hook.js +66 -80
- package/build/src/routes/index.js +36 -43
- package/build/src/routes/namespace-route.js +38 -47
- package/build/src/routes/plugin-routes.js +107 -124
- package/build/src/routes/post-route.js +51 -62
- package/build/src/routes/resolver.js +422 -494
- package/build/src/routes/resource-route.js +124 -143
- package/build/src/routes/root-route.js +7 -8
- package/build/src/testing/base-expect.js +13 -14
- package/build/src/testing/browser-frontend-model-event-hook-scenarios.js +329 -405
- package/build/src/testing/browser-test-app.js +23 -29
- package/build/src/testing/expect-to-change.js +41 -50
- package/build/src/testing/expect-utils.js +139 -184
- package/build/src/testing/expect.js +638 -731
- package/build/src/testing/request-client.js +70 -85
- package/build/src/testing/test-files-finder.js +285 -339
- package/build/src/testing/test-filter-parser.js +124 -155
- package/build/src/testing/test-runner.js +883 -1020
- package/build/src/testing/test-suite-splitter.js +114 -142
- package/build/src/testing/test.js +216 -256
- package/build/src/utils/backtrace-cleaner-node.js +62 -69
- package/build/src/utils/backtrace-cleaner.js +188 -216
- package/build/src/utils/ensure-error.js +7 -7
- package/build/src/utils/event-emitter.js +4 -6
- package/build/src/utils/file-exists.js +9 -10
- package/build/src/utils/format-value.js +67 -76
- package/build/src/utils/model-scope.js +27 -31
- package/build/src/utils/nest-callbacks.js +10 -13
- package/build/src/utils/plain-object.js +5 -6
- package/build/src/utils/ransack.js +448 -563
- package/build/src/utils/rest-args-error.js +5 -6
- package/build/src/utils/singularize-model-name.js +9 -11
- package/build/src/utils/split-sql-statements.js +68 -79
- package/build/src/utils/to-import-specifier.js +24 -30
- package/build/src/utils/with-tracked-stack-async-hooks.js +60 -74
- package/build/src/utils/with-tracked-stack.js +14 -18
- package/build/src/velocious-error.js +27 -30
- 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/package.json +3 -3
- package/src/configuration-types.js +1 -1
- package/src/database/record/index.js +174 -25
- package/src/environment-handlers/node/cli/commands/generate/base-models.js +50 -21
- package/src/environment-handlers/node/cli/commands/generate/frontend-models.js +5 -5
- package/src/frontend-model-resource/base-resource.js +6 -2
- package/src/frontend-models/resource-definition.js +3 -3
- package/src/frontend-models/websocket-publishers.js +6 -6
|
@@ -0,0 +1,473 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
3
|
+
import AlterTable from "./sql/alter-table.js"
|
|
4
|
+
import Base from "../base.js"
|
|
5
|
+
import CreateDatabase from "./sql/create-database.js"
|
|
6
|
+
import CreateIndex from "./sql/create-index.js"
|
|
7
|
+
import CreateTable from "./sql/create-table.js"
|
|
8
|
+
import Delete from "./sql/delete.js"
|
|
9
|
+
import {digg} from "diggerize"
|
|
10
|
+
import DropDatabase from "./sql/drop-database.js"
|
|
11
|
+
import DropTable from "./sql/drop-table.js"
|
|
12
|
+
import Insert from "./sql/insert.js"
|
|
13
|
+
import Options from "./options.js"
|
|
14
|
+
import mysql from "mysql"
|
|
15
|
+
import query from "./query.js"
|
|
16
|
+
import QueryParser from "./query-parser.js"
|
|
17
|
+
import Table from "./table.js"
|
|
18
|
+
import StructureSql from "./structure-sql.js"
|
|
19
|
+
import Upsert from "./sql/upsert.js"
|
|
20
|
+
import Update from "./sql/update.js"
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Sentinel timeout (in seconds) used as the "block forever" value when a
|
|
24
|
+
* caller asks for an indefinite advisory lock acquire. MySQL historically
|
|
25
|
+
* accepted negative timeouts as "infinite", but MariaDB 10+ silently
|
|
26
|
+
* returns NULL from `GET_LOCK` when the timeout is negative, so the
|
|
27
|
+
* driver clamps to a comfortably large positive value (1 year ≫ any
|
|
28
|
+
* realistic critical section) instead.
|
|
29
|
+
*/
|
|
30
|
+
const MYSQL_INDEFINITE_LOCK_TIMEOUT_SECONDS = 60 * 60 * 24 * 365
|
|
31
|
+
|
|
32
|
+
export default class VelociousDatabaseDriversMysql extends Base{
|
|
33
|
+
/**
|
|
34
|
+
* Runs connect.
|
|
35
|
+
* @returns {Promise<void>} - Resolves when complete.
|
|
36
|
+
*/
|
|
37
|
+
async connect() {
|
|
38
|
+
this.pool = mysql.createPool(Object.assign({connectionLimit: 1}, this.connectArgs()))
|
|
39
|
+
this.pool.on("error", this.onPoolError)
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* On pool error.
|
|
44
|
+
* @param {Error} error - Error from the connection attempt.
|
|
45
|
+
*/
|
|
46
|
+
onPoolError = (error) => {
|
|
47
|
+
console.error("Velocious / MySQL driver / Pool error", error)
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Runs close.
|
|
52
|
+
* @returns {Promise<void>} - Resolves when complete.
|
|
53
|
+
*/
|
|
54
|
+
async close() {
|
|
55
|
+
await this.pool?.end()
|
|
56
|
+
this.pool = undefined
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Runs set connection checkout name.
|
|
61
|
+
* @param {string | undefined} name - Human-readable name for this active checkout.
|
|
62
|
+
* @returns {Promise<void>} - Resolves when complete.
|
|
63
|
+
*/
|
|
64
|
+
async setConnectionCheckoutName(name) {
|
|
65
|
+
await this.query(`SET @velocious_connection_checkout_name = ${name === undefined ? "NULL" : this.quote(name)}`, {logName: "Set Connection Checkout Name", processListComment: false})
|
|
66
|
+
await super.setConnectionCheckoutName(name)
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Runs clear connection checkout name.
|
|
71
|
+
* @returns {Promise<void>} - Resolves when complete.
|
|
72
|
+
*/
|
|
73
|
+
async clearConnectionCheckoutName() {
|
|
74
|
+
await this.query("SET @velocious_connection_checkout_name = NULL", {logName: "Clear Connection Checkout Name", processListComment: false})
|
|
75
|
+
await super.clearConnectionCheckoutName()
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Runs connect args.
|
|
80
|
+
* @returns {Record<string, ?>} - The connect args.
|
|
81
|
+
*/
|
|
82
|
+
connectArgs() {
|
|
83
|
+
const args = this.getArgs()
|
|
84
|
+
const forward = ["database", "host", "password"]
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Connect args.
|
|
88
|
+
@type {Record<string, ?>} */
|
|
89
|
+
const connectArgs = {charset: "utf8mb4"}
|
|
90
|
+
|
|
91
|
+
for (const forwardValue of forward) {
|
|
92
|
+
if (forwardValue in args) connectArgs[forwardValue] = digg(args, forwardValue)
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
if ("username" in args) connectArgs["user"] = args["username"]
|
|
96
|
+
if ("charset" in args) connectArgs["charset"] = args["charset"]
|
|
97
|
+
|
|
98
|
+
return connectArgs
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Runs alter table sqls.
|
|
103
|
+
* @param {import("../../table-data/index.js").default} tableData - Table data.
|
|
104
|
+
* @returns {Promise<string[]>} - Resolves with SQL statements.
|
|
105
|
+
*/
|
|
106
|
+
async alterTableSQLs(tableData) {
|
|
107
|
+
const alterArgs = {tableData, driver: this}
|
|
108
|
+
const alterTable = new AlterTable(alterArgs)
|
|
109
|
+
|
|
110
|
+
return await alterTable.toSQLs()
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Runs create database sql.
|
|
115
|
+
* @param {string} databaseName - Database name.
|
|
116
|
+
* @param {object} [args] - Options object.
|
|
117
|
+
* @param {boolean} [args.ifNotExists] - Whether if not exists.
|
|
118
|
+
* @returns {string[]} - SQL statements.
|
|
119
|
+
*/
|
|
120
|
+
createDatabaseSql(databaseName, args) {
|
|
121
|
+
const createArgs = Object.assign({databaseName, driver: this}, args)
|
|
122
|
+
const createDatabase = new CreateDatabase(createArgs)
|
|
123
|
+
|
|
124
|
+
return createDatabase.toSql()
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Runs drop database sql.
|
|
129
|
+
* @param {string} databaseName - Database name.
|
|
130
|
+
* @param {object} [args] - Options object.
|
|
131
|
+
* @param {boolean} [args.ifExists] - Whether if exists.
|
|
132
|
+
* @returns {string[]} - SQL statements.
|
|
133
|
+
*/
|
|
134
|
+
dropDatabaseSql(databaseName, args) {
|
|
135
|
+
const dropArgs = Object.assign({databaseName, driver: this}, args)
|
|
136
|
+
const dropDatabase = new DropDatabase(dropArgs)
|
|
137
|
+
|
|
138
|
+
return dropDatabase.toSql()
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Runs create index sqls.
|
|
143
|
+
* @param {import("../base.js").CreateIndexSqlArgs} indexData - Index data.
|
|
144
|
+
* @returns {Promise<string[]>} - Resolves with SQL statements.
|
|
145
|
+
*/
|
|
146
|
+
async createIndexSQLs(indexData) {
|
|
147
|
+
const createArgs = Object.assign({driver: this}, indexData)
|
|
148
|
+
const createIndex = new CreateIndex(createArgs)
|
|
149
|
+
|
|
150
|
+
return await createIndex.toSQLs()
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Runs create table sql.
|
|
155
|
+
* @param {import("../../table-data/index.js").default} tableData - Table data.
|
|
156
|
+
* @returns {Promise<string[]>} - Resolves with SQL statements.
|
|
157
|
+
*/
|
|
158
|
+
async createTableSql(tableData) {
|
|
159
|
+
const createArgs = {tableData, driver: this}
|
|
160
|
+
const createTable = new CreateTable(createArgs)
|
|
161
|
+
|
|
162
|
+
return createTable.toSql()
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Runs current database.
|
|
167
|
+
* @returns {Promise<string>} - Resolves with the current database.
|
|
168
|
+
*/
|
|
169
|
+
async currentDatabase() {
|
|
170
|
+
const rows = await this.query("SELECT DATABASE() AS db_name")
|
|
171
|
+
|
|
172
|
+
return digg(rows, 0, "db_name")
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* Runs disable foreign keys.
|
|
177
|
+
* @returns {Promise<void>} - Resolves when complete.
|
|
178
|
+
*/
|
|
179
|
+
async disableForeignKeys() {
|
|
180
|
+
await this.query("SET FOREIGN_KEY_CHECKS = 0")
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Runs enable foreign keys.
|
|
185
|
+
* @returns {Promise<void>} - Resolves when complete.
|
|
186
|
+
*/
|
|
187
|
+
async enableForeignKeys() {
|
|
188
|
+
await this.query("SET FOREIGN_KEY_CHECKS = 1")
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Runs drop table sqls.
|
|
193
|
+
* @param {string} tableName - Table name.
|
|
194
|
+
* @param {import("../base.js").DropTableSqlArgsType} [args] - Options object.
|
|
195
|
+
* @returns {Promise<string[]>} - Resolves with SQL statements.
|
|
196
|
+
*/
|
|
197
|
+
async dropTableSQLs(tableName, args = {}) {
|
|
198
|
+
const dropArgs = Object.assign({tableName, driver: this}, args)
|
|
199
|
+
const dropTable = new DropTable(dropArgs)
|
|
200
|
+
|
|
201
|
+
return await dropTable.toSQLs()
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Runs get type.
|
|
206
|
+
* @returns {string} - The type.
|
|
207
|
+
*/
|
|
208
|
+
getType() { return "mysql" }
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* Runs primary key type.
|
|
212
|
+
* @returns {string} - The primary key type.
|
|
213
|
+
*/
|
|
214
|
+
primaryKeyType() { return "bigint" }
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Runs retryable database error.
|
|
218
|
+
* @param {Error} error - Error instance.
|
|
219
|
+
* @returns {import("../base.js").RetryableDatabaseErrorResult} - Retry info.
|
|
220
|
+
*/
|
|
221
|
+
retryableDatabaseError(error) {
|
|
222
|
+
const errorCode = /**
|
|
223
|
+
* Narrows the runtime value to the documented type.
|
|
224
|
+
@type {?} */ (error).code
|
|
225
|
+
const message = error.message || ""
|
|
226
|
+
const shouldRetry = (
|
|
227
|
+
errorCode == "ECONNREFUSED" ||
|
|
228
|
+
message.includes("ECONNREFUSED") ||
|
|
229
|
+
message.includes("connect ECONNREFUSED") ||
|
|
230
|
+
message.includes("PROTOCOL_CONNECTION_LOST") ||
|
|
231
|
+
message.includes("Connection lost")
|
|
232
|
+
)
|
|
233
|
+
|
|
234
|
+
return {
|
|
235
|
+
retry: shouldRetry,
|
|
236
|
+
reconnect: shouldRetry,
|
|
237
|
+
waitMs: 50
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* Runs query actual.
|
|
243
|
+
* @param {string} sql - SQL string.
|
|
244
|
+
* @returns {Promise<import("../base.js").QueryResultType>} - Resolves with the query actual.
|
|
245
|
+
*/
|
|
246
|
+
async _queryActual(sql) {
|
|
247
|
+
if (!this.pool) await this.connect()
|
|
248
|
+
if (!this.pool) throw new Error("MySQL pool failed to initialize")
|
|
249
|
+
|
|
250
|
+
try {
|
|
251
|
+
return await query(this.pool, sql)
|
|
252
|
+
} catch (error) {
|
|
253
|
+
// Re-throw to un-corrupt stacktrace
|
|
254
|
+
if (error instanceof Error) {
|
|
255
|
+
throw new Error(`Query failed: ${error.message}`, {cause: error})
|
|
256
|
+
} else {
|
|
257
|
+
throw new Error(`Query failed: ${error}`, {cause: error})
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
/**
|
|
263
|
+
* Runs query to sql.
|
|
264
|
+
* @param {import("../../query/index.js").default} query - Query instance.
|
|
265
|
+
* @returns {string} - SQL string.
|
|
266
|
+
*/
|
|
267
|
+
queryToSql(query) { return new QueryParser({query}).toSql() }
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* Runs should set auto increment when primary key.
|
|
271
|
+
* @returns {boolean} - Whether set auto increment when primary key.
|
|
272
|
+
*/
|
|
273
|
+
shouldSetAutoIncrementWhenPrimaryKey() { return true }
|
|
274
|
+
supportsDefaultPrimaryKeyUUID() { return false }
|
|
275
|
+
|
|
276
|
+
/**
|
|
277
|
+
* Runs escape.
|
|
278
|
+
* @param {?} value - Value to use.
|
|
279
|
+
* @returns {?} - The escape.
|
|
280
|
+
*/
|
|
281
|
+
escape(value) {
|
|
282
|
+
const escapedValueWithQuotes = this.pool
|
|
283
|
+
? this.pool.escape(this._convertValue(value))
|
|
284
|
+
: mysql.escape(this._convertValue(value))
|
|
285
|
+
|
|
286
|
+
return escapedValueWithQuotes.slice(1, escapedValueWithQuotes.length - 1)
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
/**
|
|
290
|
+
* Runs quote.
|
|
291
|
+
* @param {string} value - Value to use.
|
|
292
|
+
* @returns {string} - The quote.
|
|
293
|
+
*/
|
|
294
|
+
quote(value) {
|
|
295
|
+
if (this.pool) {
|
|
296
|
+
return this.pool.escape(this._convertValue(value))
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
return mysql.escape(this._convertValue(value))
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* Runs delete sql.
|
|
304
|
+
* @param {import("../base.js").DeleteSqlArgsType} args - Options object.
|
|
305
|
+
* @returns {string} - SQL string.
|
|
306
|
+
*/
|
|
307
|
+
deleteSql({tableName, conditions}) {
|
|
308
|
+
const deleteInstruction = new Delete({conditions, driver: this, tableName})
|
|
309
|
+
|
|
310
|
+
return deleteInstruction.toSql()
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
/**
|
|
314
|
+
* Runs insert sql.
|
|
315
|
+
* @abstract
|
|
316
|
+
* @param {import("../base.js").InsertSqlArgsType} args - Options object.
|
|
317
|
+
* @returns {string} - SQL string.
|
|
318
|
+
*/
|
|
319
|
+
insertSql(args) {
|
|
320
|
+
const insertArgs = Object.assign({driver: this}, args)
|
|
321
|
+
const insert = new Insert(insertArgs)
|
|
322
|
+
|
|
323
|
+
return insert.toSql()
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
/**
|
|
327
|
+
* Runs get tables.
|
|
328
|
+
* @returns {Promise<Array<import("../base-table.js").default>>} - Resolves with the tables.
|
|
329
|
+
*/
|
|
330
|
+
async getTables() {
|
|
331
|
+
return await this._cachedSchemaMetadata("tables", async () => {
|
|
332
|
+
const result = await this.query("SHOW FULL TABLES")
|
|
333
|
+
const tables = []
|
|
334
|
+
|
|
335
|
+
for (const row of result) {
|
|
336
|
+
const table = new Table(this, /**
|
|
337
|
+
* Narrows the runtime value to the documented type.
|
|
338
|
+
@type {Record<string, string>} */ (row))
|
|
339
|
+
|
|
340
|
+
tables.push(table)
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
return tables
|
|
344
|
+
})
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
/**
|
|
348
|
+
* Runs structure sql.
|
|
349
|
+
* @returns {Promise<string | null>} - Resolves with SQL string.
|
|
350
|
+
*/
|
|
351
|
+
async structureSql() {
|
|
352
|
+
return await this._cachedSchemaMetadata("structureSql", async () => await new StructureSql({driver: this}).toSql())
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
/**
|
|
356
|
+
* Runs last insert id.
|
|
357
|
+
* @returns {Promise<number>} - Resolves with the last insert id.
|
|
358
|
+
*/
|
|
359
|
+
async lastInsertID() {
|
|
360
|
+
const result = await this.query("SELECT LAST_INSERT_ID() AS last_insert_id")
|
|
361
|
+
|
|
362
|
+
return digg(result, 0, "last_insert_id")
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
/**
|
|
366
|
+
* Runs options.
|
|
367
|
+
* @returns {Options} - The options options.
|
|
368
|
+
*/
|
|
369
|
+
options() {
|
|
370
|
+
if (!this._options) this._options = new Options({driver: this})
|
|
371
|
+
|
|
372
|
+
return this._options
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
/**
|
|
376
|
+
* Runs start transaction action.
|
|
377
|
+
* @returns {Promise<void>} - Resolves when complete.
|
|
378
|
+
*/
|
|
379
|
+
async _startTransactionAction() {
|
|
380
|
+
await this.query("START TRANSACTION")
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
/**
|
|
384
|
+
* Runs update sql.
|
|
385
|
+
* @param {import("../base.js").UpdateSqlArgsType} args - Options object.
|
|
386
|
+
* @returns {string} - SQL string.
|
|
387
|
+
*/
|
|
388
|
+
updateSql({conditions, data, tableName}) {
|
|
389
|
+
const update = new Update({conditions, data, driver: this, tableName})
|
|
390
|
+
|
|
391
|
+
return update.toSql()
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
/**
|
|
395
|
+
* Runs upsert sql.
|
|
396
|
+
* @param {import("../base.js").UpsertSqlArgsType} args - Options object.
|
|
397
|
+
* @returns {string} - SQL string.
|
|
398
|
+
*/
|
|
399
|
+
upsertSql(args) {
|
|
400
|
+
const upsert = new Upsert({...args, driver: this})
|
|
401
|
+
|
|
402
|
+
return upsert.toSql()
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
/**
|
|
406
|
+
* Blocks until a MySQL/MariaDB user-level lock is acquired on this
|
|
407
|
+
* connection. Implemented via `GET_LOCK(name, timeout)`, where the
|
|
408
|
+
* timeout is in seconds.
|
|
409
|
+
*
|
|
410
|
+
* MySQL historically documented a negative timeout as "infinite",
|
|
411
|
+
* but MariaDB 10+ silently rejects negative timeouts and returns
|
|
412
|
+
* `NULL` from `GET_LOCK`. To make the helper portable across MySQL
|
|
413
|
+
* and MariaDB the "indefinite" case is encoded as a large positive
|
|
414
|
+
* timeout (one year), which is comfortably longer than any
|
|
415
|
+
* realistic critical section and works on every supported version.
|
|
416
|
+
* @param {string} name - Lock name.
|
|
417
|
+
* @param {{timeoutMs?: number | null}} [args] - Optional timeout in milliseconds; `null`, `undefined`, or negative blocks for `MYSQL_INDEFINITE_LOCK_TIMEOUT_SECONDS`.
|
|
418
|
+
* @returns {Promise<boolean>} - True if acquired, false if the timeout elapsed.
|
|
419
|
+
*/
|
|
420
|
+
async acquireAdvisoryLock(name, {timeoutMs} = {}) {
|
|
421
|
+
const timeoutSeconds = typeof timeoutMs === "number" && timeoutMs >= 0
|
|
422
|
+
? Math.ceil(timeoutMs / 1000)
|
|
423
|
+
: MYSQL_INDEFINITE_LOCK_TIMEOUT_SECONDS
|
|
424
|
+
const rows = await this.query(`SELECT GET_LOCK(${this.quote(name)}, ${timeoutSeconds}) AS velocious_advisory_lock_result`)
|
|
425
|
+
const result = rows?.[0]?.velocious_advisory_lock_result
|
|
426
|
+
|
|
427
|
+
if (result === null || result === undefined) {
|
|
428
|
+
throw new Error(`GET_LOCK returned NULL for advisory lock ${JSON.stringify(name)} (typically an out-of-memory or thread-killed condition)`)
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
return Number(result) === 1
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
/**
|
|
435
|
+
* Runs try acquire advisory lock.
|
|
436
|
+
* @param {string} name - Lock name.
|
|
437
|
+
* @returns {Promise<boolean>} - True if the lock was acquired, false if it was already held.
|
|
438
|
+
*/
|
|
439
|
+
async tryAcquireAdvisoryLock(name) {
|
|
440
|
+
const rows = await this.query(`SELECT GET_LOCK(${this.quote(name)}, 0) AS velocious_advisory_lock_result`)
|
|
441
|
+
const result = rows?.[0]?.velocious_advisory_lock_result
|
|
442
|
+
|
|
443
|
+
if (result === null || result === undefined) {
|
|
444
|
+
throw new Error(`GET_LOCK returned NULL for advisory lock ${JSON.stringify(name)} (typically an out-of-memory or thread-killed condition)`)
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
return Number(result) === 1
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
/**
|
|
451
|
+
* Runs release advisory lock.
|
|
452
|
+
* @param {string} name - Lock name.
|
|
453
|
+
* @returns {Promise<boolean>} - True if the lock was held by this session and has now been released.
|
|
454
|
+
*/
|
|
455
|
+
async releaseAdvisoryLock(name) {
|
|
456
|
+
const rows = await this.query(`SELECT RELEASE_LOCK(${this.quote(name)}) AS velocious_advisory_lock_result`)
|
|
457
|
+
const result = rows?.[0]?.velocious_advisory_lock_result
|
|
458
|
+
|
|
459
|
+
return Number(result) === 1
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
/**
|
|
463
|
+
* Runs is advisory lock held.
|
|
464
|
+
* @param {string} name - Lock name.
|
|
465
|
+
* @returns {Promise<boolean>} - True if any session currently holds the lock.
|
|
466
|
+
*/
|
|
467
|
+
async isAdvisoryLockHeld(name) {
|
|
468
|
+
const rows = await this.query(`SELECT IS_USED_LOCK(${this.quote(name)}) AS velocious_advisory_lock_holder`)
|
|
469
|
+
const holder = rows?.[0]?.velocious_advisory_lock_holder
|
|
470
|
+
|
|
471
|
+
return holder !== null && holder !== undefined
|
|
472
|
+
}
|
|
473
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
3
|
+
import QueryParserOptions from "../../query-parser/options.js"
|
|
4
|
+
|
|
5
|
+
export default class VelociousDatabaseDriversMysqlOptions 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
|
+
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runs query.
|
|
3
|
+
* @param {import("mysql").Pool} pool - Pool.
|
|
4
|
+
* @param {string} sql - SQL string.
|
|
5
|
+
* @returns {Promise<Record<string, ?>[]>} - Resolves with string value.
|
|
6
|
+
*/
|
|
7
|
+
export default async function query(pool, sql) {
|
|
8
|
+
return new Promise((resolve, reject) => {
|
|
9
|
+
pool.query(sql, (error, results, fields) => {
|
|
10
|
+
if (error) {
|
|
11
|
+
reject(new Error(`Query failed because of ${error}: ${sql}`))
|
|
12
|
+
} else {
|
|
13
|
+
const rows = []
|
|
14
|
+
const resultRows = Array.isArray(results) ? results : []
|
|
15
|
+
const resultFields = Array.isArray(fields) ? fields : []
|
|
16
|
+
|
|
17
|
+
for (const rowData of resultRows) {
|
|
18
|
+
/**
|
|
19
|
+
* Result.
|
|
20
|
+
@type {Record<string, ?>} */
|
|
21
|
+
const result = {}
|
|
22
|
+
|
|
23
|
+
for (const fieldData of resultFields) {
|
|
24
|
+
const field = fieldData.name
|
|
25
|
+
const value = rowData[field]
|
|
26
|
+
|
|
27
|
+
result[field] = value
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
rows.push(result)
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
resolve(rows)
|
|
34
|
+
}
|
|
35
|
+
})
|
|
36
|
+
})
|
|
37
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
3
|
+
import CreateDatabaseBase from "../../../query/create-database-base.js"
|
|
4
|
+
|
|
5
|
+
const IDENTIFIER_PATTERN = /^[A-Za-z0-9_]+$/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Runs validate charset or collation.
|
|
9
|
+
* @param {string} field - Field name (for error messages).
|
|
10
|
+
* @param {string} value - Identifier value.
|
|
11
|
+
* @returns {string} - Same value, validated.
|
|
12
|
+
*/
|
|
13
|
+
function validateCharsetOrCollation(field, value) {
|
|
14
|
+
if (!IDENTIFIER_PATTERN.test(value)) {
|
|
15
|
+
throw new Error(`Invalid ${field} value: ${JSON.stringify(value)} — expected [A-Za-z0-9_]+`)
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
return value
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export default class VelociousDatabaseConnectionDriversMysqlSqlCreateDatabase extends CreateDatabaseBase {
|
|
22
|
+
/**
|
|
23
|
+
* Runs to sql.
|
|
24
|
+
* @returns {string[]} - SQL statements.
|
|
25
|
+
*/
|
|
26
|
+
toSql() {
|
|
27
|
+
const options = this.getOptions()
|
|
28
|
+
let sql = "CREATE DATABASE"
|
|
29
|
+
|
|
30
|
+
if (this.ifNotExists) sql += " IF NOT EXISTS"
|
|
31
|
+
|
|
32
|
+
sql += ` ${options.quoteDatabaseName(this.databaseName)}`
|
|
33
|
+
|
|
34
|
+
if (this.databaseCharset) sql += ` CHARACTER SET ${validateCharsetOrCollation("databaseCharset", this.databaseCharset)}`
|
|
35
|
+
if (this.databaseCollation) sql += ` COLLATE ${validateCharsetOrCollation("databaseCollation", this.databaseCollation)}`
|
|
36
|
+
|
|
37
|
+
return [sql]
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
3
|
+
import DeleteBase from "../../../query/delete-base.js"
|
|
4
|
+
|
|
5
|
+
export default class VelociousDatabaseConnectionDriversMysqlSqlDelete extends DeleteBase {
|
|
6
|
+
toSql() {
|
|
7
|
+
let sql = `DELETE FROM ${this.getOptions().quoteTableName(this.tableName)} WHERE `
|
|
8
|
+
let count = 0
|
|
9
|
+
|
|
10
|
+
for (let columnName in this.conditions) {
|
|
11
|
+
if (count > 0) sql += " AND "
|
|
12
|
+
|
|
13
|
+
sql += this.getOptions().quoteColumnName(columnName)
|
|
14
|
+
sql += " = "
|
|
15
|
+
sql += this.getOptions().quote(this.conditions[columnName])
|
|
16
|
+
count++
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
return sql
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
3
|
+
import UpdateBase from "../../../query/update-base.js"
|
|
4
|
+
|
|
5
|
+
export default class VelociousDatabaseConnectionDriversMysqlSqlUpdate extends UpdateBase {
|
|
6
|
+
toSql() {
|
|
7
|
+
let sql = `UPDATE ${this.getOptions().quoteTableName(this.tableName)} SET `
|
|
8
|
+
let count = 0
|
|
9
|
+
|
|
10
|
+
for (let columnName in this.data) {
|
|
11
|
+
if (count > 0) sql += ", "
|
|
12
|
+
|
|
13
|
+
sql += this.getOptions().quoteColumnName(columnName)
|
|
14
|
+
sql += " = "
|
|
15
|
+
sql += this.formatValue(this.data[columnName])
|
|
16
|
+
count++
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
sql += " WHERE "
|
|
20
|
+
count = 0
|
|
21
|
+
|
|
22
|
+
for (let columnName in this.conditions) {
|
|
23
|
+
if (count > 0) sql += " AND "
|
|
24
|
+
|
|
25
|
+
sql += this.getOptions().quoteColumnName(columnName)
|
|
26
|
+
sql += " = "
|
|
27
|
+
sql += this.formatValue(this.conditions[columnName])
|
|
28
|
+
count++
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return sql
|
|
32
|
+
}
|
|
33
|
+
}
|