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,441 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
3
|
+
import AlterTable from "./sql/alter-table.js"
|
|
4
|
+
import wait from "awaitery/build/wait.js"
|
|
5
|
+
import Base from "../base.js"
|
|
6
|
+
import {Client} from "pg"
|
|
7
|
+
import CreateDatabase from "./sql/create-database.js"
|
|
8
|
+
import CreateIndex from "./sql/create-index.js"
|
|
9
|
+
import CreateTable from "./sql/create-table.js"
|
|
10
|
+
import Delete from "./sql/delete.js"
|
|
11
|
+
import {digg} from "diggerize"
|
|
12
|
+
import DropDatabase from "./sql/drop-database.js"
|
|
13
|
+
import DropTable from "./sql/drop-table.js"
|
|
14
|
+
import Insert from "./sql/insert.js"
|
|
15
|
+
import Options from "./options.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
|
+
export default class VelociousDatabaseDriversPgsql extends Base{
|
|
23
|
+
async connect() {
|
|
24
|
+
const client = new Client(this.connectArgs())
|
|
25
|
+
|
|
26
|
+
try {
|
|
27
|
+
await client.connect()
|
|
28
|
+
} catch (error) {
|
|
29
|
+
// Re-throw to recover real stack trace
|
|
30
|
+
if (error instanceof Error) {
|
|
31
|
+
throw new Error(`Connect to Postgres server failed: ${error.message}`, {cause: error})
|
|
32
|
+
} else {
|
|
33
|
+
throw new Error(`Connect to Postgres server failed: ${error}`, {cause: error})
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
this.connection = client
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
connectArgs() {
|
|
41
|
+
const args = this.getArgs()
|
|
42
|
+
const forward = ["database", "host", "password", "port"]
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Connect args.
|
|
46
|
+
@type {Record<string, ?>} */
|
|
47
|
+
const connectArgs = {}
|
|
48
|
+
|
|
49
|
+
for (const forwardValue of forward) {
|
|
50
|
+
if (forwardValue in args) connectArgs[forwardValue] = digg(args, forwardValue)
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if ("username" in args) connectArgs["user"] = args["username"]
|
|
54
|
+
|
|
55
|
+
return connectArgs
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
async close() {
|
|
59
|
+
await this.connection?.end()
|
|
60
|
+
this.connection = undefined
|
|
61
|
+
this._transactionsCount = 0
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Runs set connection checkout name.
|
|
66
|
+
* @param {string | undefined} name - Human-readable name for this active checkout.
|
|
67
|
+
* @returns {Promise<void>} - Resolves when complete.
|
|
68
|
+
*/
|
|
69
|
+
async setConnectionCheckoutName(name) {
|
|
70
|
+
if (name) {
|
|
71
|
+
await this.query(`SET application_name = ${this.quote(name)}`, {logName: "Set Connection Checkout Name", processListComment: false})
|
|
72
|
+
} else {
|
|
73
|
+
await this.query("RESET application_name", {logName: "Clear Connection Checkout Name", processListComment: false})
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
await super.setConnectionCheckoutName(name)
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Runs clear connection checkout name.
|
|
81
|
+
* @returns {Promise<void>} - Resolves when complete.
|
|
82
|
+
*/
|
|
83
|
+
async clearConnectionCheckoutName() {
|
|
84
|
+
await this.query("RESET application_name", {logName: "Clear Connection Checkout Name", processListComment: false})
|
|
85
|
+
await super.clearConnectionCheckoutName()
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Runs alter table sqls.
|
|
90
|
+
* @param {import("../../table-data/index.js").default} tableData - Table data.
|
|
91
|
+
* @returns {Promise<string[]>} - Resolves with SQL statements.
|
|
92
|
+
*/
|
|
93
|
+
async alterTableSQLs(tableData) {
|
|
94
|
+
const alterArgs = {tableData, driver: this}
|
|
95
|
+
const alterTable = new AlterTable(alterArgs)
|
|
96
|
+
|
|
97
|
+
return await alterTable.toSQLs()
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Runs create database sql.
|
|
102
|
+
* @param {string} databaseName - Database name.
|
|
103
|
+
* @param {object} [args] - Options object.
|
|
104
|
+
* @param {boolean} [args.ifNotExists] - Whether if not exists.
|
|
105
|
+
* @returns {string[]} - SQL statements.
|
|
106
|
+
*/
|
|
107
|
+
createDatabaseSql(databaseName, args) {
|
|
108
|
+
const createArgs = Object.assign({databaseName, driver: this}, args)
|
|
109
|
+
const createDatabase = new CreateDatabase(createArgs)
|
|
110
|
+
|
|
111
|
+
return createDatabase.toSql()
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Runs drop database sql.
|
|
116
|
+
* @param {string} databaseName - Database name.
|
|
117
|
+
* @param {object} [args] - Options object.
|
|
118
|
+
* @param {boolean} [args.ifExists] - Whether if exists.
|
|
119
|
+
* @returns {string[]} - SQL statements.
|
|
120
|
+
*/
|
|
121
|
+
dropDatabaseSql(databaseName, args) {
|
|
122
|
+
const dropArgs = Object.assign({databaseName, driver: this}, args)
|
|
123
|
+
const dropDatabase = new DropDatabase(dropArgs)
|
|
124
|
+
|
|
125
|
+
return dropDatabase.toSql()
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Runs create index sqls.
|
|
130
|
+
* @param {import("../base.js").CreateIndexSqlArgs} indexData - Index data.
|
|
131
|
+
* @returns {Promise<string[]>} - Resolves with SQL statements.
|
|
132
|
+
*/
|
|
133
|
+
async createIndexSQLs(indexData) {
|
|
134
|
+
const createArgs = Object.assign({driver: this}, indexData)
|
|
135
|
+
const createIndex = new CreateIndex(createArgs)
|
|
136
|
+
|
|
137
|
+
return await createIndex.toSQLs()
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Runs create table sql.
|
|
142
|
+
* @param {import("../../table-data/index.js").default} tableData - Table data.
|
|
143
|
+
* @returns {Promise<string[]>} - Resolves with SQL statements.
|
|
144
|
+
*/
|
|
145
|
+
async createTableSql(tableData) {
|
|
146
|
+
const createArgs = {tableData, driver: this, indexInCreateTable: false}
|
|
147
|
+
const createTable = new CreateTable(createArgs)
|
|
148
|
+
|
|
149
|
+
return await createTable.toSql()
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
async currentDatabase() {
|
|
153
|
+
const rows = await this.query("SELECT CURRENT_DATABASE() AS db_name")
|
|
154
|
+
|
|
155
|
+
return digg(rows, 0, "db_name")
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
async disableForeignKeys() {
|
|
159
|
+
await this.query("SET session_replication_role = 'replica'")
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
async enableForeignKeys() {
|
|
163
|
+
await this.query("SET session_replication_role = 'origin'")
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Runs drop table sqls.
|
|
168
|
+
* @param {string} tableName - Table name.
|
|
169
|
+
* @param {import("../base.js").DropTableSqlArgsType} [args] - Options object.
|
|
170
|
+
* @returns {Promise<string[]>} - Resolves with SQL statements.
|
|
171
|
+
*/
|
|
172
|
+
async dropTableSQLs(tableName, args = {}) {
|
|
173
|
+
const dropArgs = Object.assign({tableName, driver: this}, args)
|
|
174
|
+
const dropTable = new DropTable(dropArgs)
|
|
175
|
+
|
|
176
|
+
return await dropTable.toSQLs()
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
getType() { return "pgsql" }
|
|
180
|
+
primaryKeyType() { return "bigint" }
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Runs query actual.
|
|
184
|
+
* @param {string} sql - SQL string.
|
|
185
|
+
* @returns {Promise<import("../base.js").QueryResultType>} - Resolves with the query actual.
|
|
186
|
+
*/
|
|
187
|
+
async _queryActual(sql) {
|
|
188
|
+
let response
|
|
189
|
+
|
|
190
|
+
if (!this.connection) await this.connect()
|
|
191
|
+
if (!this.connection) throw new Error("PostgreSQL connection failed to initialize")
|
|
192
|
+
|
|
193
|
+
try {
|
|
194
|
+
response = await this.connection.query(sql)
|
|
195
|
+
} catch (error) {
|
|
196
|
+
if (error instanceof Error) {
|
|
197
|
+
throw new Error(`Query failed: ${error.message} with SQL: ${sql}`, {cause: error})
|
|
198
|
+
} else {
|
|
199
|
+
throw new Error(`Query failed: ${error} with SQL: ${sql}`, {cause: error})
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
return response.rows
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* Runs query to sql.
|
|
208
|
+
* @param {import("../../query/index.js").default} query - Query instance.
|
|
209
|
+
* @returns {string} - SQL string.
|
|
210
|
+
*/
|
|
211
|
+
queryToSql(query) { return new QueryParser({query}).toSql() }
|
|
212
|
+
shouldSetAutoIncrementWhenPrimaryKey() { return true }
|
|
213
|
+
supportsDefaultPrimaryKeyUUID() { return true }
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Runs convert value.
|
|
217
|
+
* @param {?} value - Value to use.
|
|
218
|
+
* @returns {?} - The converted value.
|
|
219
|
+
*/
|
|
220
|
+
_convertValue(value) {
|
|
221
|
+
if (typeof value === "boolean") {
|
|
222
|
+
return value ? "true" : "false"
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
return super._convertValue(value)
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* Runs escape.
|
|
230
|
+
* @param {?} value - Value to use.
|
|
231
|
+
* @returns {?} - The escape.
|
|
232
|
+
*/
|
|
233
|
+
escape(value) {
|
|
234
|
+
if (!this.connection) throw new Error("Can't escape before connected")
|
|
235
|
+
if (typeof value === "number") return value
|
|
236
|
+
|
|
237
|
+
const escapedValueWithQuotes = this.connection.escapeLiteral(this._convertValue(value))
|
|
238
|
+
|
|
239
|
+
return escapedValueWithQuotes.slice(1, escapedValueWithQuotes.length - 1)
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
/**
|
|
243
|
+
* Runs quote.
|
|
244
|
+
* @param {?} value - Value to use.
|
|
245
|
+
* @returns {string | number} - The quoted value.
|
|
246
|
+
*/
|
|
247
|
+
quote(value) {
|
|
248
|
+
if (!this.connection) throw new Error("Can't escape before connected")
|
|
249
|
+
if (typeof value === "number") return value
|
|
250
|
+
|
|
251
|
+
return this.connection.escapeLiteral(this._convertValue(value))
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* Runs delete sql.
|
|
256
|
+
* @param {import("../base.js").DeleteSqlArgsType} args - Options object.
|
|
257
|
+
* @returns {string} - SQL string.
|
|
258
|
+
*/
|
|
259
|
+
deleteSql({tableName, conditions}) {
|
|
260
|
+
const deleteInstruction = new Delete({conditions, driver: this, tableName})
|
|
261
|
+
|
|
262
|
+
return deleteInstruction.toSql()
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* Runs insert sql.
|
|
267
|
+
* @abstract
|
|
268
|
+
* @param {import("../base.js").InsertSqlArgsType} args - Options object.
|
|
269
|
+
* @returns {string} - SQL string.
|
|
270
|
+
*/
|
|
271
|
+
insertSql(args) {
|
|
272
|
+
const insertArgs = Object.assign({driver: this}, args)
|
|
273
|
+
const insert = new Insert(insertArgs)
|
|
274
|
+
|
|
275
|
+
return insert.toSql()
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
async getTables() {
|
|
279
|
+
return await this._cachedSchemaMetadata("tables", async () => {
|
|
280
|
+
const result = await this.query("SELECT * FROM information_schema.tables WHERE table_catalog = CURRENT_DATABASE() AND table_schema = 'public'")
|
|
281
|
+
const tables = []
|
|
282
|
+
|
|
283
|
+
for (const row of result) {
|
|
284
|
+
const table = new Table(this, /**
|
|
285
|
+
* Narrows the runtime value to the documented type.
|
|
286
|
+
@type {Record<string, string>} */ (row))
|
|
287
|
+
|
|
288
|
+
tables.push(table)
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
return tables
|
|
292
|
+
})
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
async lastInsertID() {
|
|
296
|
+
const result = await this.query("SELECT LASTVAL() AS last_insert_id")
|
|
297
|
+
|
|
298
|
+
return digg(result, 0, "last_insert_id")
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
options() {
|
|
302
|
+
if (!this._options) this._options = new Options(this)
|
|
303
|
+
|
|
304
|
+
return this._options
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
async _startTransactionAction() {
|
|
308
|
+
await this.query("START TRANSACTION")
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
/**
|
|
312
|
+
* Runs update sql.
|
|
313
|
+
* @abstract
|
|
314
|
+
* @param {import("../base.js").UpdateSqlArgsType} args - Options object.
|
|
315
|
+
* @returns {string} - SQL string.
|
|
316
|
+
*/
|
|
317
|
+
updateSql({conditions, data, tableName}) {
|
|
318
|
+
const update = new Update({conditions, data, driver: this, tableName})
|
|
319
|
+
|
|
320
|
+
return update.toSql()
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
/**
|
|
324
|
+
* Runs upsert sql.
|
|
325
|
+
* @param {import("../base.js").UpsertSqlArgsType} args - Options object.
|
|
326
|
+
* @returns {string} - SQL string.
|
|
327
|
+
*/
|
|
328
|
+
upsertSql(args) {
|
|
329
|
+
const upsert = new Upsert({...args, driver: this})
|
|
330
|
+
|
|
331
|
+
return upsert.toSql()
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
/**
|
|
335
|
+
* Runs structure sql.
|
|
336
|
+
* @returns {Promise<string | null>} - Resolves with SQL string.
|
|
337
|
+
*/
|
|
338
|
+
async structureSql() {
|
|
339
|
+
return await this._cachedSchemaMetadata("structureSql", async () => await new StructureSql({driver: this}).toSql())
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
/**
|
|
343
|
+
* Deterministically hashes a lock name into a signed 64-bit integer so it
|
|
344
|
+
* can be passed to `pg_advisory_lock(bigint)`. We use a fast 64-bit FNV-1a
|
|
345
|
+
* hash — the exact value does not matter, only that the same name always
|
|
346
|
+
* produces the same key within a process AND across processes that share
|
|
347
|
+
* the same implementation. Returns the value as a string so the caller
|
|
348
|
+
* can interpolate it into SQL without losing precision to JS number
|
|
349
|
+
* coercion.
|
|
350
|
+
* @param {string} name - Lock name.
|
|
351
|
+
* @returns {string} - Signed 64-bit integer as a decimal string.
|
|
352
|
+
*/
|
|
353
|
+
advisoryLockKey(name) {
|
|
354
|
+
// FNV-1a 64-bit, computed with BigInt so we don't lose precision.
|
|
355
|
+
const fnvOffsetBasis = 0xcbf29ce484222325n
|
|
356
|
+
const fnvPrime = 0x00000100000001b3n
|
|
357
|
+
const mask64 = 0xffffffffffffffffn
|
|
358
|
+
let hash = fnvOffsetBasis
|
|
359
|
+
|
|
360
|
+
for (let index = 0; index < name.length; index += 1) {
|
|
361
|
+
hash = BigInt.asUintN(64, (hash ^ BigInt(name.charCodeAt(index))) * fnvPrime & mask64)
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
// Convert unsigned 64-bit into signed by reinterpreting the top bit.
|
|
365
|
+
const signed = hash >= 0x8000000000000000n ? hash - 0x10000000000000000n : hash
|
|
366
|
+
|
|
367
|
+
return signed.toString()
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
/**
|
|
371
|
+
* Blocks until a PostgreSQL session-level advisory lock is acquired on
|
|
372
|
+
* this connection. Implemented via `pg_advisory_lock(bigint)`, which has
|
|
373
|
+
* no native timeout — the `timeoutMs` argument is emulated by racing a
|
|
374
|
+
* `pg_try_advisory_lock` poll loop so callers on MySQL and Postgres see
|
|
375
|
+
* the same contract.
|
|
376
|
+
* @param {string} name - Lock name.
|
|
377
|
+
* @param {{timeoutMs?: number | null}} [args] - Optional timeout in milliseconds; `null`, `undefined`, or negative blocks forever.
|
|
378
|
+
* @returns {Promise<boolean>} - True if the lock was acquired, false if the timeout elapsed.
|
|
379
|
+
*/
|
|
380
|
+
async acquireAdvisoryLock(name, {timeoutMs} = {}) {
|
|
381
|
+
const key = this.advisoryLockKey(name)
|
|
382
|
+
|
|
383
|
+
if (typeof timeoutMs !== "number" || timeoutMs < 0) {
|
|
384
|
+
await this.query(`SELECT pg_advisory_lock(${key})`)
|
|
385
|
+
return true
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
const deadline = Date.now() + timeoutMs
|
|
389
|
+
const pollIntervalMs = 50
|
|
390
|
+
|
|
391
|
+
while (true) {
|
|
392
|
+
if (await this.tryAcquireAdvisoryLock(name)) return true
|
|
393
|
+
if (Date.now() >= deadline) return false
|
|
394
|
+
|
|
395
|
+
const remaining = deadline - Date.now()
|
|
396
|
+
|
|
397
|
+
await wait(Math.min(pollIntervalMs, remaining))
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
/**
|
|
402
|
+
* Runs try acquire advisory lock.
|
|
403
|
+
* @param {string} name - Lock name.
|
|
404
|
+
* @returns {Promise<boolean>} - True if the lock was acquired, false if it was already held.
|
|
405
|
+
*/
|
|
406
|
+
async tryAcquireAdvisoryLock(name) {
|
|
407
|
+
const key = this.advisoryLockKey(name)
|
|
408
|
+
const rows = await this.query(`SELECT pg_try_advisory_lock(${key}) AS velocious_advisory_lock_result`)
|
|
409
|
+
const result = rows?.[0]?.velocious_advisory_lock_result
|
|
410
|
+
|
|
411
|
+
return result === true || result === "t" || result === 1 || result === "1"
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
/**
|
|
415
|
+
* Runs release advisory lock.
|
|
416
|
+
* @param {string} name - Lock name.
|
|
417
|
+
* @returns {Promise<boolean>} - True if the lock was held by this session and has now been released.
|
|
418
|
+
*/
|
|
419
|
+
async releaseAdvisoryLock(name) {
|
|
420
|
+
const key = this.advisoryLockKey(name)
|
|
421
|
+
const rows = await this.query(`SELECT pg_advisory_unlock(${key}) AS velocious_advisory_lock_result`)
|
|
422
|
+
const result = rows?.[0]?.velocious_advisory_lock_result
|
|
423
|
+
|
|
424
|
+
return result === true || result === "t" || result === 1 || result === "1"
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
/**
|
|
428
|
+
* Runs is advisory lock held.
|
|
429
|
+
* @param {string} name - Lock name.
|
|
430
|
+
* @returns {Promise<boolean>} - True if any session currently holds the lock.
|
|
431
|
+
*/
|
|
432
|
+
async isAdvisoryLockHeld(name) {
|
|
433
|
+
const key = this.advisoryLockKey(name)
|
|
434
|
+
const rows = await this.query(
|
|
435
|
+
`SELECT EXISTS (SELECT 1 FROM pg_locks WHERE locktype = 'advisory' AND ((classid::bigint << 32) | (objid::bigint & 4294967295)) = ${key}) AS velocious_advisory_lock_held`
|
|
436
|
+
)
|
|
437
|
+
const held = rows?.[0]?.velocious_advisory_lock_held
|
|
438
|
+
|
|
439
|
+
return held === true || held === "t" || held === 1 || held === "1"
|
|
440
|
+
}
|
|
441
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
3
|
+
import QueryParserOptions from "../../query-parser/options.js"
|
|
4
|
+
|
|
5
|
+
export default class VelociousDatabaseDriversPgsqlOptions extends QueryParserOptions {
|
|
6
|
+
/**
|
|
7
|
+
* Runs constructor.
|
|
8
|
+
* @param {import("../base.js").default} driver - Database driver instance.
|
|
9
|
+
*/
|
|
10
|
+
constructor(driver) {
|
|
11
|
+
const options = {
|
|
12
|
+
driver,
|
|
13
|
+
columnQuote: "\"",
|
|
14
|
+
indexQuote: "\"",
|
|
15
|
+
stringQuote: "'",
|
|
16
|
+
tableQuote: "\""
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
super(options)
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Runs quote.
|
|
24
|
+
* @param {string} string - String.
|
|
25
|
+
* @returns {number | string} - The quote.
|
|
26
|
+
*/
|
|
27
|
+
quote(string) {
|
|
28
|
+
if (!this.driver) throw new Error("Driver not set")
|
|
29
|
+
|
|
30
|
+
return this.driver.quote(string)
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
3
|
+
import CreateDatabaseBase from "../../../query/create-database-base.js"
|
|
4
|
+
|
|
5
|
+
export default class VelociousDatabaseConnectionDriversPgsqlSqlCreateDatabase extends CreateDatabaseBase {
|
|
6
|
+
toSql() {
|
|
7
|
+
const {databaseName} = this
|
|
8
|
+
const options = this.getOptions()
|
|
9
|
+
const sqls = []
|
|
10
|
+
|
|
11
|
+
if (this.ifNotExists) {
|
|
12
|
+
sqls.push("CREATE EXTENSION IF NOT EXISTS dblink")
|
|
13
|
+
|
|
14
|
+
const connectArgs = this._driver.getArgs()
|
|
15
|
+
const {password, username} = connectArgs
|
|
16
|
+
const port = connectArgs.port || 5432
|
|
17
|
+
const sql = `
|
|
18
|
+
DO
|
|
19
|
+
$do$
|
|
20
|
+
BEGIN
|
|
21
|
+
IF EXISTS (SELECT FROM ${options.quoteTableName("pg_database")} WHERE ${options.quoteColumnName("datname")} = ${options.quote(databaseName)}) THEN
|
|
22
|
+
RAISE NOTICE 'Database already exists'; -- optional
|
|
23
|
+
ELSE
|
|
24
|
+
PERFORM dblink_connect('host=localhost port=' || ${port} || ' user=' || ${options.quote(username)} || ' password=' || ${options.quote(password)} || ' dbname=' || current_database());
|
|
25
|
+
PERFORM dblink_exec('CREATE DATABASE ' || ${options.quote(databaseName)});
|
|
26
|
+
END IF;
|
|
27
|
+
END
|
|
28
|
+
$do$;
|
|
29
|
+
`
|
|
30
|
+
|
|
31
|
+
sqls.push(sql)
|
|
32
|
+
} else {
|
|
33
|
+
sqls.push(`CREATE DATABASE ${options.quoteDatabaseName(databaseName)}`)
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return sqls
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
3
|
+
import DeleteBase from "../../../query/delete-base.js"
|
|
4
|
+
|
|
5
|
+
export default class VelociousDatabaseConnectionDriversPgsqlSqlDelete 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 VelociousDatabaseConnectionDriversPgsqlSqlUpdate 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
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
3
|
+
import UpsertBase from "../../../query/upsert-base.js"
|
|
4
|
+
|
|
5
|
+
export default class VelociousDatabaseConnectionDriversPgsqlSqlUpsert extends UpsertBase {
|
|
6
|
+
toSql() {
|
|
7
|
+
const conflictSql = this.conflictColumns.map((columnName) => this.quotedColumn(columnName)).join(", ")
|
|
8
|
+
const updateSql = this.updateColumns.map((columnName) => {
|
|
9
|
+
return `${this.quotedColumn(columnName)} = excluded.${this.quotedColumn(columnName)}`
|
|
10
|
+
}).join(", ")
|
|
11
|
+
|
|
12
|
+
return `INSERT INTO ${this.quotedTableName()} (${this.quotedInsertColumnsSql()}) VALUES (${this.quotedInsertValuesSql()}) ON CONFLICT (${conflictSql}) DO UPDATE SET ${updateSql}`
|
|
13
|
+
}
|
|
14
|
+
}
|