spindb 0.37.2 → 0.38.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/bin.js +9 -0
- package/dist/cli/bin.js.map +1 -0
- package/dist/cli/commands/attach.js +102 -0
- package/dist/cli/commands/attach.js.map +1 -0
- package/dist/cli/commands/backup.js +197 -0
- package/dist/cli/commands/backup.js.map +1 -0
- package/dist/cli/commands/backups.js +190 -0
- package/dist/cli/commands/backups.js.map +1 -0
- package/dist/cli/commands/clone.js +119 -0
- package/dist/cli/commands/clone.js.map +1 -0
- package/dist/cli/commands/config.js +276 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/connect.js +559 -0
- package/dist/cli/commands/connect.js.map +1 -0
- package/dist/cli/commands/create.js +952 -0
- package/dist/cli/commands/create.js.map +1 -0
- package/dist/cli/commands/databases.js +485 -0
- package/dist/cli/commands/databases.js.map +1 -0
- package/dist/cli/commands/delete.js +106 -0
- package/dist/cli/commands/delete.js.map +1 -0
- package/dist/cli/commands/deps.js +238 -0
- package/dist/cli/commands/deps.js.map +1 -0
- package/dist/cli/commands/detach.js +81 -0
- package/dist/cli/commands/detach.js.map +1 -0
- package/dist/cli/commands/doctor.js +567 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/duckdb.js +207 -0
- package/dist/cli/commands/duckdb.js.map +1 -0
- package/dist/cli/commands/edit.js +524 -0
- package/dist/cli/commands/edit.js.map +1 -0
- package/dist/cli/commands/engines.js +1414 -0
- package/dist/cli/commands/engines.js.map +1 -0
- package/dist/cli/commands/export.js +383 -0
- package/dist/cli/commands/export.js.map +1 -0
- package/dist/cli/commands/info.js +270 -0
- package/dist/cli/commands/info.js.map +1 -0
- package/dist/cli/commands/list.js +215 -0
- package/dist/cli/commands/list.js.map +1 -0
- package/dist/cli/commands/logs.js +81 -0
- package/dist/cli/commands/logs.js.map +1 -0
- package/dist/cli/commands/menu/backup-handlers.js +1202 -0
- package/dist/cli/commands/menu/backup-handlers.js.map +1 -0
- package/dist/cli/commands/menu/container-handlers.js +1788 -0
- package/dist/cli/commands/menu/container-handlers.js.map +1 -0
- package/dist/cli/commands/menu/engine-handlers.js +235 -0
- package/dist/cli/commands/menu/engine-handlers.js.map +1 -0
- package/dist/cli/commands/menu/index.js +266 -0
- package/dist/cli/commands/menu/index.js.map +1 -0
- package/dist/cli/commands/menu/settings-handlers.js +320 -0
- package/dist/cli/commands/menu/settings-handlers.js.map +1 -0
- package/dist/cli/commands/menu/shared.js +13 -0
- package/dist/cli/commands/menu/shared.js.map +1 -0
- package/dist/cli/commands/menu/shell-handlers.js +1573 -0
- package/dist/cli/commands/menu/shell-handlers.js.map +1 -0
- package/dist/cli/commands/menu/sql-handlers.js +185 -0
- package/dist/cli/commands/menu/sql-handlers.js.map +1 -0
- package/dist/cli/commands/menu/update-handlers.js +322 -0
- package/dist/cli/commands/menu/update-handlers.js.map +1 -0
- package/dist/cli/commands/menu/validators.js +9 -0
- package/dist/cli/commands/menu/validators.js.map +1 -0
- package/dist/cli/commands/ports.js +166 -0
- package/dist/cli/commands/ports.js.map +1 -0
- package/dist/cli/commands/pull.js +166 -0
- package/dist/cli/commands/pull.js.map +1 -0
- package/dist/cli/commands/query.js +180 -0
- package/dist/cli/commands/query.js.map +1 -0
- package/dist/cli/commands/restore.js +428 -0
- package/dist/cli/commands/restore.js.map +1 -0
- package/dist/cli/commands/run.js +115 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/self-update.js +99 -0
- package/dist/cli/commands/self-update.js.map +1 -0
- package/dist/cli/commands/sqlite.js +207 -0
- package/dist/cli/commands/sqlite.js.map +1 -0
- package/dist/cli/commands/start.js +196 -0
- package/dist/cli/commands/start.js.map +1 -0
- package/dist/cli/commands/stop.js +182 -0
- package/dist/cli/commands/stop.js.map +1 -0
- package/dist/cli/commands/url.js +88 -0
- package/dist/cli/commands/url.js.map +1 -0
- package/dist/cli/commands/users.js +189 -0
- package/dist/cli/commands/users.js.map +1 -0
- package/dist/cli/commands/version.js +52 -0
- package/dist/cli/commands/version.js.map +1 -0
- package/dist/cli/commands/which.js +258 -0
- package/dist/cli/commands/which.js.map +1 -0
- package/dist/cli/constants.js +212 -0
- package/dist/cli/constants.js.map +1 -0
- package/dist/cli/helpers.js +1120 -0
- package/dist/cli/helpers.js.map +1 -0
- package/dist/cli/index.js +146 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/ui/prompts.js +1002 -0
- package/dist/cli/ui/prompts.js.map +1 -0
- package/dist/cli/ui/spinner.js +74 -0
- package/dist/cli/ui/spinner.js.map +1 -0
- package/dist/cli/ui/theme.js +99 -0
- package/dist/cli/ui/theme.js.map +1 -0
- package/dist/cli/utils/file-follower.js +79 -0
- package/dist/cli/utils/file-follower.js.map +1 -0
- package/dist/config/backup-formats.js +363 -0
- package/dist/config/backup-formats.js.map +1 -0
- package/dist/config/defaults.js +25 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/engine-defaults.js +303 -0
- package/dist/config/engine-defaults.js.map +1 -0
- package/dist/config/engines-registry.js +103 -0
- package/dist/config/engines-registry.js.map +1 -0
- package/dist/config/os-dependencies.js +767 -0
- package/dist/config/os-dependencies.js.map +1 -0
- package/dist/config/paths.js +156 -0
- package/dist/config/paths.js.map +1 -0
- package/dist/config/version.js +3 -0
- package/dist/config/version.js.map +1 -0
- package/dist/core/backup-restore.js +219 -0
- package/dist/core/backup-restore.js.map +1 -0
- package/dist/core/base-binary-manager.js +403 -0
- package/dist/core/base-binary-manager.js.map +1 -0
- package/dist/core/base-document-binary-manager.js +364 -0
- package/dist/core/base-document-binary-manager.js.map +1 -0
- package/dist/core/base-embedded-binary-manager.js +364 -0
- package/dist/core/base-embedded-binary-manager.js.map +1 -0
- package/dist/core/base-server-binary-manager.js +368 -0
- package/dist/core/base-server-binary-manager.js.map +1 -0
- package/dist/core/config-manager.js +495 -0
- package/dist/core/config-manager.js.map +1 -0
- package/dist/core/container-manager.js +609 -0
- package/dist/core/container-manager.js.map +1 -0
- package/dist/core/credential-generator.js +67 -0
- package/dist/core/credential-generator.js.map +1 -0
- package/dist/core/credential-manager.js +211 -0
- package/dist/core/credential-manager.js.map +1 -0
- package/dist/core/dblab-utils.js +105 -0
- package/dist/core/dblab-utils.js.map +1 -0
- package/dist/core/dependency-manager.js +359 -0
- package/dist/core/dependency-manager.js.map +1 -0
- package/dist/core/docker-exporter.js +1077 -0
- package/dist/core/docker-exporter.js.map +1 -0
- package/dist/core/error-handler.js +295 -0
- package/dist/core/error-handler.js.map +1 -0
- package/dist/core/fs-error-utils.js +74 -0
- package/dist/core/fs-error-utils.js.map +1 -0
- package/dist/core/homebrew-version-manager.js +280 -0
- package/dist/core/homebrew-version-manager.js.map +1 -0
- package/dist/core/hostdb-client.js +252 -0
- package/dist/core/hostdb-client.js.map +1 -0
- package/dist/core/hostdb-metadata.js +243 -0
- package/dist/core/hostdb-metadata.js.map +1 -0
- package/dist/core/hostdb-releases-factory.js +161 -0
- package/dist/core/hostdb-releases-factory.js.map +1 -0
- package/dist/core/library-env.js +88 -0
- package/dist/core/library-env.js.map +1 -0
- package/dist/core/pgweb-utils.js +53 -0
- package/dist/core/pgweb-utils.js.map +1 -0
- package/dist/core/platform-service.js +632 -0
- package/dist/core/platform-service.js.map +1 -0
- package/dist/core/port-manager.js +136 -0
- package/dist/core/port-manager.js.map +1 -0
- package/dist/core/process-manager.js +445 -0
- package/dist/core/process-manager.js.map +1 -0
- package/dist/core/pull-manager.js +418 -0
- package/dist/core/pull-manager.js.map +1 -0
- package/dist/core/query-parser.js +449 -0
- package/dist/core/query-parser.js.map +1 -0
- package/dist/core/spawn-utils.js +90 -0
- package/dist/core/spawn-utils.js.map +1 -0
- package/dist/core/start-with-retry.js +90 -0
- package/dist/core/start-with-retry.js.map +1 -0
- package/dist/core/test-cleanup.js +85 -0
- package/dist/core/test-cleanup.js.map +1 -0
- package/dist/core/tls-generator.js +84 -0
- package/dist/core/tls-generator.js.map +1 -0
- package/dist/core/transaction-manager.js +139 -0
- package/dist/core/transaction-manager.js.map +1 -0
- package/dist/core/update-manager.js +241 -0
- package/dist/core/update-manager.js.map +1 -0
- package/dist/core/version-migration.js +260 -0
- package/dist/core/version-migration.js.map +1 -0
- package/dist/core/version-utils.js +91 -0
- package/dist/core/version-utils.js.map +1 -0
- package/dist/engines/base-engine.js +179 -0
- package/dist/engines/base-engine.js.map +1 -0
- package/dist/engines/clickhouse/backup.js +289 -0
- package/dist/engines/clickhouse/backup.js.map +1 -0
- package/dist/engines/clickhouse/binary-manager.js +145 -0
- package/dist/engines/clickhouse/binary-manager.js.map +1 -0
- package/dist/engines/clickhouse/binary-urls.js +100 -0
- package/dist/engines/clickhouse/binary-urls.js.map +1 -0
- package/dist/engines/clickhouse/cli-utils.js +143 -0
- package/dist/engines/clickhouse/cli-utils.js.map +1 -0
- package/dist/engines/clickhouse/hostdb-releases.js +24 -0
- package/dist/engines/clickhouse/hostdb-releases.js.map +1 -0
- package/dist/engines/clickhouse/index.js +1077 -0
- package/dist/engines/clickhouse/index.js.map +1 -0
- package/dist/engines/clickhouse/restore.js +335 -0
- package/dist/engines/clickhouse/restore.js.map +1 -0
- package/dist/engines/clickhouse/version-maps.js +83 -0
- package/dist/engines/clickhouse/version-maps.js.map +1 -0
- package/dist/engines/clickhouse/version-validator.js +133 -0
- package/dist/engines/clickhouse/version-validator.js.map +1 -0
- package/dist/engines/cockroachdb/backup.js +261 -0
- package/dist/engines/cockroachdb/backup.js.map +1 -0
- package/dist/engines/cockroachdb/binary-manager.js +33 -0
- package/dist/engines/cockroachdb/binary-manager.js.map +1 -0
- package/dist/engines/cockroachdb/binary-urls.js +33 -0
- package/dist/engines/cockroachdb/binary-urls.js.map +1 -0
- package/dist/engines/cockroachdb/cli-utils.js +338 -0
- package/dist/engines/cockroachdb/cli-utils.js.map +1 -0
- package/dist/engines/cockroachdb/hostdb-releases.js +21 -0
- package/dist/engines/cockroachdb/hostdb-releases.js.map +1 -0
- package/dist/engines/cockroachdb/index.js +1016 -0
- package/dist/engines/cockroachdb/index.js.map +1 -0
- package/dist/engines/cockroachdb/restore.js +323 -0
- package/dist/engines/cockroachdb/restore.js.map +1 -0
- package/dist/engines/cockroachdb/version-maps.js +37 -0
- package/dist/engines/cockroachdb/version-maps.js.map +1 -0
- package/dist/engines/couchdb/api-client.js +64 -0
- package/dist/engines/couchdb/api-client.js.map +1 -0
- package/dist/engines/couchdb/backup.js +90 -0
- package/dist/engines/couchdb/backup.js.map +1 -0
- package/dist/engines/couchdb/binary-manager.js +62 -0
- package/dist/engines/couchdb/binary-manager.js.map +1 -0
- package/dist/engines/couchdb/binary-urls.js +92 -0
- package/dist/engines/couchdb/binary-urls.js.map +1 -0
- package/dist/engines/couchdb/hostdb-releases.js +21 -0
- package/dist/engines/couchdb/hostdb-releases.js.map +1 -0
- package/dist/engines/couchdb/index.js +1043 -0
- package/dist/engines/couchdb/index.js.map +1 -0
- package/dist/engines/couchdb/restore.js +198 -0
- package/dist/engines/couchdb/restore.js.map +1 -0
- package/dist/engines/couchdb/version-maps.js +67 -0
- package/dist/engines/couchdb/version-maps.js.map +1 -0
- package/dist/engines/couchdb/version-validator.js +88 -0
- package/dist/engines/couchdb/version-validator.js.map +1 -0
- package/dist/engines/duckdb/binary-manager.js +33 -0
- package/dist/engines/duckdb/binary-manager.js.map +1 -0
- package/{engines/duckdb/binary-urls.ts → dist/engines/duckdb/binary-urls.js} +11 -16
- package/dist/engines/duckdb/binary-urls.js.map +1 -0
- package/dist/engines/duckdb/hostdb-releases.js +21 -0
- package/dist/engines/duckdb/hostdb-releases.js.map +1 -0
- package/dist/engines/duckdb/index.js +594 -0
- package/dist/engines/duckdb/index.js.map +1 -0
- package/dist/engines/duckdb/registry.js +265 -0
- package/dist/engines/duckdb/registry.js.map +1 -0
- package/dist/engines/duckdb/scanner.js +12 -0
- package/dist/engines/duckdb/scanner.js.map +1 -0
- package/dist/engines/duckdb/version-maps.js +67 -0
- package/dist/engines/duckdb/version-maps.js.map +1 -0
- package/dist/engines/duckdb/version-validator.js +62 -0
- package/dist/engines/duckdb/version-validator.js.map +1 -0
- package/dist/engines/ferretdb/backup.js +170 -0
- package/dist/engines/ferretdb/backup.js.map +1 -0
- package/dist/engines/ferretdb/binary-manager.js +765 -0
- package/dist/engines/ferretdb/binary-manager.js.map +1 -0
- package/dist/engines/ferretdb/binary-urls.js +135 -0
- package/dist/engines/ferretdb/binary-urls.js.map +1 -0
- package/dist/engines/ferretdb/index.js +1517 -0
- package/dist/engines/ferretdb/index.js.map +1 -0
- package/dist/engines/ferretdb/restore.js +310 -0
- package/dist/engines/ferretdb/restore.js.map +1 -0
- package/{engines/ferretdb/version-maps.ts → dist/engines/ferretdb/version-maps.js} +62 -79
- package/dist/engines/ferretdb/version-maps.js.map +1 -0
- package/dist/engines/file-based-utils.js +184 -0
- package/dist/engines/file-based-utils.js.map +1 -0
- package/dist/engines/index.js +124 -0
- package/dist/engines/index.js.map +1 -0
- package/dist/engines/influxdb/api-client.js +54 -0
- package/dist/engines/influxdb/api-client.js.map +1 -0
- package/dist/engines/influxdb/backup.js +119 -0
- package/dist/engines/influxdb/backup.js.map +1 -0
- package/dist/engines/influxdb/binary-manager.js +87 -0
- package/dist/engines/influxdb/binary-manager.js.map +1 -0
- package/dist/engines/influxdb/binary-urls.js +56 -0
- package/dist/engines/influxdb/binary-urls.js.map +1 -0
- package/dist/engines/influxdb/hostdb-releases.js +21 -0
- package/dist/engines/influxdb/hostdb-releases.js.map +1 -0
- package/dist/engines/influxdb/index.js +962 -0
- package/dist/engines/influxdb/index.js.map +1 -0
- package/dist/engines/influxdb/restore.js +329 -0
- package/dist/engines/influxdb/restore.js.map +1 -0
- package/dist/engines/influxdb/version-maps.js +64 -0
- package/dist/engines/influxdb/version-maps.js.map +1 -0
- package/dist/engines/influxdb/version-validator.js +109 -0
- package/dist/engines/influxdb/version-validator.js.map +1 -0
- package/dist/engines/mariadb/backup.js +178 -0
- package/dist/engines/mariadb/backup.js.map +1 -0
- package/dist/engines/mariadb/binary-manager.js +33 -0
- package/dist/engines/mariadb/binary-manager.js.map +1 -0
- package/{engines/mariadb/binary-urls.ts → dist/engines/mariadb/binary-urls.js} +38 -55
- package/dist/engines/mariadb/binary-urls.js.map +1 -0
- package/dist/engines/mariadb/hostdb-releases.js +21 -0
- package/dist/engines/mariadb/hostdb-releases.js.map +1 -0
- package/dist/engines/mariadb/index.js +1011 -0
- package/dist/engines/mariadb/index.js.map +1 -0
- package/dist/engines/mariadb/restore.js +322 -0
- package/dist/engines/mariadb/restore.js.map +1 -0
- package/dist/engines/mariadb/version-maps.js +63 -0
- package/dist/engines/mariadb/version-maps.js.map +1 -0
- package/dist/engines/mariadb/version-validator.js +143 -0
- package/dist/engines/mariadb/version-validator.js.map +1 -0
- package/dist/engines/meilisearch/api-client.js +50 -0
- package/dist/engines/meilisearch/api-client.js.map +1 -0
- package/dist/engines/meilisearch/backup.js +167 -0
- package/dist/engines/meilisearch/backup.js.map +1 -0
- package/dist/engines/meilisearch/binary-manager.js +31 -0
- package/dist/engines/meilisearch/binary-manager.js.map +1 -0
- package/dist/engines/meilisearch/binary-urls.js +56 -0
- package/dist/engines/meilisearch/binary-urls.js.map +1 -0
- package/dist/engines/meilisearch/hostdb-releases.js +21 -0
- package/dist/engines/meilisearch/hostdb-releases.js.map +1 -0
- package/dist/engines/meilisearch/index.js +992 -0
- package/dist/engines/meilisearch/index.js.map +1 -0
- package/dist/engines/meilisearch/restore.js +167 -0
- package/dist/engines/meilisearch/restore.js.map +1 -0
- package/dist/engines/meilisearch/version-maps.js +67 -0
- package/dist/engines/meilisearch/version-maps.js.map +1 -0
- package/dist/engines/meilisearch/version-validator.js +109 -0
- package/dist/engines/meilisearch/version-validator.js.map +1 -0
- package/dist/engines/mongodb/backup.js +109 -0
- package/dist/engines/mongodb/backup.js.map +1 -0
- package/dist/engines/mongodb/binary-manager.js +36 -0
- package/dist/engines/mongodb/binary-manager.js.map +1 -0
- package/dist/engines/mongodb/binary-urls.js +46 -0
- package/dist/engines/mongodb/binary-urls.js.map +1 -0
- package/dist/engines/mongodb/cli-utils.js +131 -0
- package/dist/engines/mongodb/cli-utils.js.map +1 -0
- package/dist/engines/mongodb/hostdb-releases.js +77 -0
- package/dist/engines/mongodb/hostdb-releases.js.map +1 -0
- package/dist/engines/mongodb/index.js +873 -0
- package/dist/engines/mongodb/index.js.map +1 -0
- package/dist/engines/mongodb/restore.js +276 -0
- package/dist/engines/mongodb/restore.js.map +1 -0
- package/dist/engines/mongodb/version-maps.js +79 -0
- package/dist/engines/mongodb/version-maps.js.map +1 -0
- package/dist/engines/mongodb/version-validator.js +133 -0
- package/dist/engines/mongodb/version-validator.js.map +1 -0
- package/dist/engines/mysql/backup.js +210 -0
- package/dist/engines/mysql/backup.js.map +1 -0
- package/dist/engines/mysql/binary-detection.js +325 -0
- package/dist/engines/mysql/binary-detection.js.map +1 -0
- package/dist/engines/mysql/binary-manager.js +30 -0
- package/dist/engines/mysql/binary-manager.js.map +1 -0
- package/dist/engines/mysql/binary-urls.js +87 -0
- package/dist/engines/mysql/binary-urls.js.map +1 -0
- package/{engines/mysql/hostdb-releases.ts → dist/engines/mysql/hostdb-releases.js} +20 -23
- package/dist/engines/mysql/hostdb-releases.js.map +1 -0
- package/dist/engines/mysql/index.js +1066 -0
- package/dist/engines/mysql/index.js.map +1 -0
- package/dist/engines/mysql/restore.js +361 -0
- package/dist/engines/mysql/restore.js.map +1 -0
- package/dist/engines/mysql/version-maps.js +79 -0
- package/dist/engines/mysql/version-maps.js.map +1 -0
- package/dist/engines/mysql/version-validator.js +266 -0
- package/dist/engines/mysql/version-validator.js.map +1 -0
- package/dist/engines/postgresql/backup.js +118 -0
- package/dist/engines/postgresql/backup.js.map +1 -0
- package/dist/engines/postgresql/binary-manager.js +85 -0
- package/dist/engines/postgresql/binary-manager.js.map +1 -0
- package/dist/engines/postgresql/binary-urls.js +80 -0
- package/dist/engines/postgresql/binary-urls.js.map +1 -0
- package/dist/engines/postgresql/hostdb-releases.js +21 -0
- package/dist/engines/postgresql/hostdb-releases.js.map +1 -0
- package/dist/engines/postgresql/index.js +852 -0
- package/dist/engines/postgresql/index.js.map +1 -0
- package/dist/engines/postgresql/remote-version.js +109 -0
- package/dist/engines/postgresql/remote-version.js.map +1 -0
- package/dist/engines/postgresql/restore.js +254 -0
- package/dist/engines/postgresql/restore.js.map +1 -0
- package/dist/engines/postgresql/version-maps.js +73 -0
- package/dist/engines/postgresql/version-maps.js.map +1 -0
- package/dist/engines/postgresql/version-validator.js +286 -0
- package/dist/engines/postgresql/version-validator.js.map +1 -0
- package/dist/engines/qdrant/api-client.js +50 -0
- package/dist/engines/qdrant/api-client.js.map +1 -0
- package/dist/engines/qdrant/backup.js +115 -0
- package/dist/engines/qdrant/backup.js.map +1 -0
- package/dist/engines/qdrant/binary-manager.js +31 -0
- package/dist/engines/qdrant/binary-manager.js.map +1 -0
- package/dist/engines/qdrant/binary-urls.js +92 -0
- package/dist/engines/qdrant/binary-urls.js.map +1 -0
- package/dist/engines/qdrant/cli-utils.js +39 -0
- package/dist/engines/qdrant/cli-utils.js.map +1 -0
- package/dist/engines/qdrant/hostdb-releases.js +21 -0
- package/dist/engines/qdrant/hostdb-releases.js.map +1 -0
- package/dist/engines/qdrant/index.js +1002 -0
- package/dist/engines/qdrant/index.js.map +1 -0
- package/dist/engines/qdrant/restore.js +154 -0
- package/dist/engines/qdrant/restore.js.map +1 -0
- package/dist/engines/qdrant/version-maps.js +67 -0
- package/dist/engines/qdrant/version-maps.js.map +1 -0
- package/dist/engines/qdrant/version-validator.js +109 -0
- package/dist/engines/qdrant/version-validator.js.map +1 -0
- package/dist/engines/questdb/backup.js +191 -0
- package/dist/engines/questdb/backup.js.map +1 -0
- package/dist/engines/questdb/binary-manager.js +247 -0
- package/dist/engines/questdb/binary-manager.js.map +1 -0
- package/dist/engines/questdb/binary-urls.js +27 -0
- package/dist/engines/questdb/binary-urls.js.map +1 -0
- package/dist/engines/questdb/hostdb-releases.js +21 -0
- package/dist/engines/questdb/hostdb-releases.js.map +1 -0
- package/dist/engines/questdb/index.js +814 -0
- package/dist/engines/questdb/index.js.map +1 -0
- package/dist/engines/questdb/restore.js +202 -0
- package/dist/engines/questdb/restore.js.map +1 -0
- package/dist/engines/questdb/version-maps.js +33 -0
- package/dist/engines/questdb/version-maps.js.map +1 -0
- package/dist/engines/questdb/version-validator.js +99 -0
- package/dist/engines/questdb/version-validator.js.map +1 -0
- package/dist/engines/redis/backup.js +292 -0
- package/dist/engines/redis/backup.js.map +1 -0
- package/dist/engines/redis/binary-manager.js +32 -0
- package/dist/engines/redis/binary-manager.js.map +1 -0
- package/dist/engines/redis/binary-urls.js +96 -0
- package/dist/engines/redis/binary-urls.js.map +1 -0
- package/dist/engines/redis/cli-utils.js +38 -0
- package/dist/engines/redis/cli-utils.js.map +1 -0
- package/dist/engines/redis/hostdb-releases.js +21 -0
- package/dist/engines/redis/hostdb-releases.js.map +1 -0
- package/dist/engines/redis/index.js +1263 -0
- package/dist/engines/redis/index.js.map +1 -0
- package/dist/engines/redis/restore.js +338 -0
- package/dist/engines/redis/restore.js.map +1 -0
- package/dist/engines/redis/version-maps.js +70 -0
- package/dist/engines/redis/version-maps.js.map +1 -0
- package/dist/engines/redis/version-validator.js +109 -0
- package/dist/engines/redis/version-validator.js.map +1 -0
- package/dist/engines/sqlite/binary-manager.js +39 -0
- package/dist/engines/sqlite/binary-manager.js.map +1 -0
- package/{engines/sqlite/binary-urls.ts → dist/engines/sqlite/binary-urls.js} +11 -16
- package/dist/engines/sqlite/binary-urls.js.map +1 -0
- package/dist/engines/sqlite/hostdb-releases.js +21 -0
- package/dist/engines/sqlite/hostdb-releases.js.map +1 -0
- package/dist/engines/sqlite/index.js +493 -0
- package/dist/engines/sqlite/index.js.map +1 -0
- package/dist/engines/sqlite/registry.js +163 -0
- package/dist/engines/sqlite/registry.js.map +1 -0
- package/dist/engines/sqlite/scanner.js +12 -0
- package/dist/engines/sqlite/scanner.js.map +1 -0
- package/dist/engines/sqlite/version-maps.js +57 -0
- package/dist/engines/sqlite/version-maps.js.map +1 -0
- package/dist/engines/surrealdb/backup.js +97 -0
- package/dist/engines/surrealdb/backup.js.map +1 -0
- package/dist/engines/surrealdb/binary-manager.js +33 -0
- package/dist/engines/surrealdb/binary-manager.js.map +1 -0
- package/dist/engines/surrealdb/binary-urls.js +33 -0
- package/dist/engines/surrealdb/binary-urls.js.map +1 -0
- package/dist/engines/surrealdb/cli-utils.js +147 -0
- package/dist/engines/surrealdb/cli-utils.js.map +1 -0
- package/dist/engines/surrealdb/hostdb-releases.js +21 -0
- package/dist/engines/surrealdb/hostdb-releases.js.map +1 -0
- package/dist/engines/surrealdb/index.js +1022 -0
- package/dist/engines/surrealdb/index.js.map +1 -0
- package/dist/engines/surrealdb/restore.js +224 -0
- package/dist/engines/surrealdb/restore.js.map +1 -0
- package/dist/engines/surrealdb/version-maps.js +36 -0
- package/dist/engines/surrealdb/version-maps.js.map +1 -0
- package/dist/engines/tigerbeetle/backup.js +36 -0
- package/dist/engines/tigerbeetle/backup.js.map +1 -0
- package/dist/engines/tigerbeetle/binary-manager.js +72 -0
- package/dist/engines/tigerbeetle/binary-manager.js.map +1 -0
- package/dist/engines/tigerbeetle/binary-urls.js +49 -0
- package/dist/engines/tigerbeetle/binary-urls.js.map +1 -0
- package/dist/engines/tigerbeetle/hostdb-releases.js +21 -0
- package/dist/engines/tigerbeetle/hostdb-releases.js.map +1 -0
- package/dist/engines/tigerbeetle/index.js +559 -0
- package/dist/engines/tigerbeetle/index.js.map +1 -0
- package/dist/engines/tigerbeetle/restore.js +91 -0
- package/dist/engines/tigerbeetle/restore.js.map +1 -0
- package/{engines/tigerbeetle/version-maps.ts → dist/engines/tigerbeetle/version-maps.js} +22 -31
- package/dist/engines/tigerbeetle/version-maps.js.map +1 -0
- package/dist/engines/tigerbeetle/version-validator.js +108 -0
- package/dist/engines/tigerbeetle/version-validator.js.map +1 -0
- package/dist/engines/typedb/backup.js +129 -0
- package/dist/engines/typedb/backup.js.map +1 -0
- package/dist/engines/typedb/binary-manager.js +151 -0
- package/dist/engines/typedb/binary-manager.js.map +1 -0
- package/dist/engines/typedb/binary-urls.js +33 -0
- package/dist/engines/typedb/binary-urls.js.map +1 -0
- package/dist/engines/typedb/cli-utils.js +163 -0
- package/dist/engines/typedb/cli-utils.js.map +1 -0
- package/dist/engines/typedb/hostdb-releases.js +21 -0
- package/dist/engines/typedb/hostdb-releases.js.map +1 -0
- package/dist/engines/typedb/index.js +1003 -0
- package/dist/engines/typedb/index.js.map +1 -0
- package/dist/engines/typedb/restore.js +279 -0
- package/dist/engines/typedb/restore.js.map +1 -0
- package/dist/engines/typedb/version-maps.js +40 -0
- package/dist/engines/typedb/version-maps.js.map +1 -0
- package/dist/engines/typedb/version-validator.js +103 -0
- package/dist/engines/typedb/version-validator.js.map +1 -0
- package/dist/engines/valkey/backup.js +292 -0
- package/dist/engines/valkey/backup.js.map +1 -0
- package/dist/engines/valkey/binary-manager.js +33 -0
- package/dist/engines/valkey/binary-manager.js.map +1 -0
- package/dist/engines/valkey/binary-urls.js +98 -0
- package/dist/engines/valkey/binary-urls.js.map +1 -0
- package/dist/engines/valkey/cli-utils.js +38 -0
- package/dist/engines/valkey/cli-utils.js.map +1 -0
- package/dist/engines/valkey/hostdb-releases.js +21 -0
- package/dist/engines/valkey/hostdb-releases.js.map +1 -0
- package/dist/engines/valkey/index.js +1257 -0
- package/dist/engines/valkey/index.js.map +1 -0
- package/dist/engines/valkey/restore.js +340 -0
- package/dist/engines/valkey/restore.js.map +1 -0
- package/dist/engines/valkey/version-maps.js +70 -0
- package/dist/engines/valkey/version-maps.js.map +1 -0
- package/dist/engines/valkey/version-validator.js +112 -0
- package/dist/engines/valkey/version-validator.js.map +1 -0
- package/dist/engines/weaviate/api-client.js +50 -0
- package/dist/engines/weaviate/api-client.js.map +1 -0
- package/dist/engines/weaviate/backup.js +95 -0
- package/dist/engines/weaviate/backup.js.map +1 -0
- package/dist/engines/weaviate/binary-manager.js +58 -0
- package/dist/engines/weaviate/binary-manager.js.map +1 -0
- package/dist/engines/weaviate/binary-urls.js +92 -0
- package/dist/engines/weaviate/binary-urls.js.map +1 -0
- package/dist/engines/weaviate/cli-utils.js +39 -0
- package/dist/engines/weaviate/cli-utils.js.map +1 -0
- package/dist/engines/weaviate/hostdb-releases.js +21 -0
- package/dist/engines/weaviate/hostdb-releases.js.map +1 -0
- package/dist/engines/weaviate/index.js +871 -0
- package/dist/engines/weaviate/index.js.map +1 -0
- package/dist/engines/weaviate/restore.js +185 -0
- package/dist/engines/weaviate/restore.js.map +1 -0
- package/dist/engines/weaviate/version-maps.js +67 -0
- package/dist/engines/weaviate/version-maps.js.map +1 -0
- package/dist/engines/weaviate/version-validator.js +109 -0
- package/dist/engines/weaviate/version-validator.js.map +1 -0
- package/dist/types/index.js +102 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +12 -9
- package/bin/cli.js +0 -68
- package/cli/bin.ts +0 -10
- package/cli/commands/attach.ts +0 -139
- package/cli/commands/backup.ts +0 -290
- package/cli/commands/backups.ts +0 -247
- package/cli/commands/clone.ts +0 -159
- package/cli/commands/config.ts +0 -367
- package/cli/commands/connect.ts +0 -684
- package/cli/commands/create.ts +0 -1201
- package/cli/commands/databases.ts +0 -630
- package/cli/commands/delete.ts +0 -133
- package/cli/commands/deps.ts +0 -342
- package/cli/commands/detach.ts +0 -107
- package/cli/commands/doctor.ts +0 -689
- package/cli/commands/duckdb.ts +0 -273
- package/cli/commands/edit.ts +0 -683
- package/cli/commands/engines.ts +0 -1914
- package/cli/commands/export.ts +0 -544
- package/cli/commands/info.ts +0 -340
- package/cli/commands/list.ts +0 -284
- package/cli/commands/logs.ts +0 -102
- package/cli/commands/menu/backup-handlers.ts +0 -1571
- package/cli/commands/menu/container-handlers.ts +0 -2288
- package/cli/commands/menu/engine-handlers.ts +0 -355
- package/cli/commands/menu/index.ts +0 -342
- package/cli/commands/menu/settings-handlers.ts +0 -365
- package/cli/commands/menu/shared.ts +0 -23
- package/cli/commands/menu/shell-handlers.ts +0 -1811
- package/cli/commands/menu/sql-handlers.ts +0 -231
- package/cli/commands/menu/update-handlers.ts +0 -378
- package/cli/commands/menu/validators.ts +0 -8
- package/cli/commands/ports.ts +0 -211
- package/cli/commands/pull.ts +0 -223
- package/cli/commands/query.ts +0 -241
- package/cli/commands/restore.ts +0 -587
- package/cli/commands/run.ts +0 -178
- package/cli/commands/self-update.ts +0 -121
- package/cli/commands/sqlite.ts +0 -273
- package/cli/commands/start.ts +0 -218
- package/cli/commands/stop.ts +0 -241
- package/cli/commands/url.ts +0 -104
- package/cli/commands/users.ts +0 -264
- package/cli/commands/version.ts +0 -55
- package/cli/commands/which.ts +0 -290
- package/cli/constants.ts +0 -233
- package/cli/helpers.ts +0 -1593
- package/cli/index.ts +0 -162
- package/cli/ui/prompts.ts +0 -1525
- package/cli/ui/spinner.ts +0 -88
- package/cli/ui/theme.ts +0 -128
- package/cli/utils/file-follower.ts +0 -93
- package/config/backup-formats.ts +0 -446
- package/config/defaults.ts +0 -56
- package/config/engine-defaults.ts +0 -336
- package/config/engines-registry.ts +0 -150
- package/config/engines.schema.json +0 -135
- package/config/os-dependencies.ts +0 -888
- package/config/paths.ts +0 -200
- package/core/backup-restore.ts +0 -330
- package/core/base-binary-manager.ts +0 -562
- package/core/base-document-binary-manager.ts +0 -523
- package/core/base-embedded-binary-manager.ts +0 -547
- package/core/base-server-binary-manager.ts +0 -523
- package/core/config-manager.ts +0 -652
- package/core/container-manager.ts +0 -787
- package/core/credential-generator.ts +0 -93
- package/core/credential-manager.ts +0 -259
- package/core/dblab-utils.ts +0 -113
- package/core/dependency-manager.ts +0 -512
- package/core/docker-exporter.ts +0 -1345
- package/core/error-handler.ts +0 -419
- package/core/fs-error-utils.ts +0 -82
- package/core/homebrew-version-manager.ts +0 -352
- package/core/hostdb-client.ts +0 -344
- package/core/hostdb-metadata.ts +0 -350
- package/core/hostdb-releases-factory.ts +0 -237
- package/core/library-env.ts +0 -118
- package/core/pgweb-utils.ts +0 -62
- package/core/platform-service.ts +0 -829
- package/core/port-manager.ts +0 -165
- package/core/process-manager.ts +0 -576
- package/core/pull-manager.ts +0 -511
- package/core/query-parser.ts +0 -514
- package/core/spawn-utils.ts +0 -122
- package/core/start-with-retry.ts +0 -130
- package/core/test-cleanup.ts +0 -108
- package/core/tls-generator.ts +0 -116
- package/core/transaction-manager.ts +0 -158
- package/core/update-manager.ts +0 -308
- package/core/version-migration.ts +0 -346
- package/core/version-utils.ts +0 -104
- package/engines/base-engine.ts +0 -340
- package/engines/clickhouse/README.md +0 -231
- package/engines/clickhouse/backup.ts +0 -398
- package/engines/clickhouse/binary-manager.ts +0 -201
- package/engines/clickhouse/binary-urls.ts +0 -125
- package/engines/clickhouse/cli-utils.ts +0 -176
- package/engines/clickhouse/hostdb-releases.ts +0 -30
- package/engines/clickhouse/index.ts +0 -1345
- package/engines/clickhouse/restore.ts +0 -466
- package/engines/clickhouse/version-maps.ts +0 -95
- package/engines/clickhouse/version-validator.ts +0 -154
- package/engines/cockroachdb/README.md +0 -170
- package/engines/cockroachdb/backup.ts +0 -376
- package/engines/cockroachdb/binary-manager.ts +0 -45
- package/engines/cockroachdb/binary-urls.ts +0 -40
- package/engines/cockroachdb/cli-utils.ts +0 -384
- package/engines/cockroachdb/hostdb-releases.ts +0 -26
- package/engines/cockroachdb/index.ts +0 -1276
- package/engines/cockroachdb/restore.ts +0 -455
- package/engines/cockroachdb/version-maps.ts +0 -42
- package/engines/couchdb/README.md +0 -257
- package/engines/couchdb/api-client.ts +0 -81
- package/engines/couchdb/backup.ts +0 -137
- package/engines/couchdb/binary-manager.ts +0 -86
- package/engines/couchdb/binary-urls.ts +0 -115
- package/engines/couchdb/hostdb-releases.ts +0 -23
- package/engines/couchdb/index.ts +0 -1429
- package/engines/couchdb/restore.ts +0 -290
- package/engines/couchdb/version-maps.ts +0 -78
- package/engines/couchdb/version-validator.ts +0 -111
- package/engines/duckdb/README.md +0 -154
- package/engines/duckdb/binary-manager.ts +0 -45
- package/engines/duckdb/hostdb-releases.ts +0 -23
- package/engines/duckdb/index.ts +0 -749
- package/engines/duckdb/registry.ts +0 -303
- package/engines/duckdb/scanner.ts +0 -22
- package/engines/duckdb/version-maps.ts +0 -78
- package/engines/duckdb/version-validator.ts +0 -78
- package/engines/ferretdb/README.md +0 -262
- package/engines/ferretdb/backup.ts +0 -173
- package/engines/ferretdb/binary-manager.ts +0 -1095
- package/engines/ferretdb/binary-urls.ts +0 -183
- package/engines/ferretdb/index.ts +0 -1907
- package/engines/ferretdb/restore.ts +0 -357
- package/engines/file-based-utils.ts +0 -262
- package/engines/index.ts +0 -131
- package/engines/influxdb/README.md +0 -180
- package/engines/influxdb/api-client.ts +0 -64
- package/engines/influxdb/backup.ts +0 -160
- package/engines/influxdb/binary-manager.ts +0 -110
- package/engines/influxdb/binary-urls.ts +0 -69
- package/engines/influxdb/hostdb-releases.ts +0 -23
- package/engines/influxdb/index.ts +0 -1272
- package/engines/influxdb/restore.ts +0 -417
- package/engines/influxdb/version-maps.ts +0 -75
- package/engines/influxdb/version-validator.ts +0 -128
- package/engines/mariadb/README.md +0 -141
- package/engines/mariadb/backup.ts +0 -233
- package/engines/mariadb/binary-manager.ts +0 -45
- package/engines/mariadb/hostdb-releases.ts +0 -23
- package/engines/mariadb/index.ts +0 -1300
- package/engines/mariadb/restore.ts +0 -447
- package/engines/mariadb/version-maps.ts +0 -72
- package/engines/mariadb/version-validator.ts +0 -181
- package/engines/meilisearch/README.md +0 -255
- package/engines/meilisearch/api-client.ts +0 -61
- package/engines/meilisearch/backup.ts +0 -233
- package/engines/meilisearch/binary-manager.ts +0 -43
- package/engines/meilisearch/binary-urls.ts +0 -69
- package/engines/meilisearch/hostdb-releases.ts +0 -26
- package/engines/meilisearch/index.ts +0 -1292
- package/engines/meilisearch/restore.ts +0 -219
- package/engines/meilisearch/version-maps.ts +0 -78
- package/engines/meilisearch/version-validator.ts +0 -128
- package/engines/mongodb/README.md +0 -162
- package/engines/mongodb/backup.ts +0 -127
- package/engines/mongodb/binary-manager.ts +0 -48
- package/engines/mongodb/binary-urls.ts +0 -63
- package/engines/mongodb/cli-utils.ts +0 -171
- package/engines/mongodb/hostdb-releases.ts +0 -91
- package/engines/mongodb/index.ts +0 -1118
- package/engines/mongodb/restore.ts +0 -361
- package/engines/mongodb/version-maps.ts +0 -91
- package/engines/mongodb/version-validator.ts +0 -160
- package/engines/mysql/README.md +0 -142
- package/engines/mysql/backup.ts +0 -270
- package/engines/mysql/binary-detection.ts +0 -408
- package/engines/mysql/binary-manager.ts +0 -42
- package/engines/mysql/binary-urls.ts +0 -104
- package/engines/mysql/index.ts +0 -1361
- package/engines/mysql/restore.ts +0 -500
- package/engines/mysql/version-maps.ts +0 -91
- package/engines/mysql/version-validator.ts +0 -369
- package/engines/postgresql/README.md +0 -158
- package/engines/postgresql/backup.ts +0 -151
- package/engines/postgresql/binary-manager.ts +0 -114
- package/engines/postgresql/binary-urls.ts +0 -99
- package/engines/postgresql/hostdb-releases.ts +0 -26
- package/engines/postgresql/index.ts +0 -1143
- package/engines/postgresql/remote-version.ts +0 -161
- package/engines/postgresql/restore.ts +0 -342
- package/engines/postgresql/version-maps.ts +0 -83
- package/engines/postgresql/version-validator.ts +0 -413
- package/engines/qdrant/README.md +0 -222
- package/engines/qdrant/api-client.ts +0 -61
- package/engines/qdrant/backup.ts +0 -165
- package/engines/qdrant/binary-manager.ts +0 -43
- package/engines/qdrant/binary-urls.ts +0 -115
- package/engines/qdrant/cli-utils.ts +0 -43
- package/engines/qdrant/hostdb-releases.ts +0 -23
- package/engines/qdrant/index.ts +0 -1312
- package/engines/qdrant/restore.ts +0 -203
- package/engines/qdrant/version-maps.ts +0 -78
- package/engines/qdrant/version-validator.ts +0 -128
- package/engines/questdb/README.md +0 -334
- package/engines/questdb/backup.ts +0 -220
- package/engines/questdb/binary-manager.ts +0 -310
- package/engines/questdb/binary-urls.ts +0 -34
- package/engines/questdb/hostdb-releases.ts +0 -23
- package/engines/questdb/index.ts +0 -1023
- package/engines/questdb/restore.ts +0 -260
- package/engines/questdb/version-maps.ts +0 -37
- package/engines/questdb/version-validator.ts +0 -121
- package/engines/redis/README.md +0 -173
- package/engines/redis/backup.ts +0 -389
- package/engines/redis/binary-manager.ts +0 -44
- package/engines/redis/binary-urls.ts +0 -117
- package/engines/redis/cli-utils.ts +0 -42
- package/engines/redis/hostdb-releases.ts +0 -23
- package/engines/redis/index.ts +0 -1583
- package/engines/redis/restore.ts +0 -443
- package/engines/redis/version-maps.ts +0 -81
- package/engines/redis/version-validator.ts +0 -131
- package/engines/sqlite/README.md +0 -162
- package/engines/sqlite/binary-manager.ts +0 -52
- package/engines/sqlite/hostdb-releases.ts +0 -23
- package/engines/sqlite/index.ts +0 -641
- package/engines/sqlite/registry.ts +0 -198
- package/engines/sqlite/scanner.ts +0 -22
- package/engines/sqlite/version-maps.ts +0 -64
- package/engines/surrealdb/README.md +0 -218
- package/engines/surrealdb/backup.ts +0 -131
- package/engines/surrealdb/binary-manager.ts +0 -45
- package/engines/surrealdb/binary-urls.ts +0 -40
- package/engines/surrealdb/cli-utils.ts +0 -173
- package/engines/surrealdb/hostdb-releases.ts +0 -23
- package/engines/surrealdb/index.ts +0 -1246
- package/engines/surrealdb/restore.ts +0 -302
- package/engines/surrealdb/version-maps.ts +0 -41
- package/engines/tigerbeetle/README.md +0 -61
- package/engines/tigerbeetle/backup.ts +0 -49
- package/engines/tigerbeetle/binary-manager.ts +0 -95
- package/engines/tigerbeetle/binary-urls.ts +0 -62
- package/engines/tigerbeetle/hostdb-releases.ts +0 -26
- package/engines/tigerbeetle/index.ts +0 -746
- package/engines/tigerbeetle/restore.ts +0 -130
- package/engines/tigerbeetle/version-validator.ts +0 -126
- package/engines/typedb/backup.ts +0 -167
- package/engines/typedb/binary-manager.ts +0 -200
- package/engines/typedb/binary-urls.ts +0 -40
- package/engines/typedb/cli-utils.ts +0 -210
- package/engines/typedb/hostdb-releases.ts +0 -23
- package/engines/typedb/index.ts +0 -1275
- package/engines/typedb/restore.ts +0 -377
- package/engines/typedb/version-maps.ts +0 -48
- package/engines/typedb/version-validator.ts +0 -127
- package/engines/valkey/README.md +0 -219
- package/engines/valkey/backup.ts +0 -389
- package/engines/valkey/binary-manager.ts +0 -45
- package/engines/valkey/binary-urls.ts +0 -122
- package/engines/valkey/cli-utils.ts +0 -42
- package/engines/valkey/hostdb-releases.ts +0 -23
- package/engines/valkey/index.ts +0 -1585
- package/engines/valkey/restore.ts +0 -446
- package/engines/valkey/version-maps.ts +0 -81
- package/engines/valkey/version-validator.ts +0 -131
- package/engines/weaviate/README.md +0 -302
- package/engines/weaviate/api-client.ts +0 -61
- package/engines/weaviate/backup.ts +0 -145
- package/engines/weaviate/binary-manager.ts +0 -80
- package/engines/weaviate/binary-urls.ts +0 -115
- package/engines/weaviate/cli-utils.ts +0 -43
- package/engines/weaviate/hostdb-releases.ts +0 -23
- package/engines/weaviate/index.ts +0 -1139
- package/engines/weaviate/restore.ts +0 -235
- package/engines/weaviate/version-maps.ts +0 -78
- package/engines/weaviate/version-validator.ts +0 -128
- package/types/index.ts +0 -624
- /package/{config → dist/config}/engines.json +0 -0
|
@@ -1,334 +0,0 @@
|
|
|
1
|
-
# QuestDB Engine Implementation
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
QuestDB is a high-performance time-series database with SQL support via PostgreSQL wire protocol. It's a Java-based database with a bundled JRE, making it one of the more complex engines to manage.
|
|
6
|
-
|
|
7
|
-
## Platform Support
|
|
8
|
-
|
|
9
|
-
| Platform | Architecture | Status | Notes |
|
|
10
|
-
|----------|--------------|--------|-------|
|
|
11
|
-
| darwin | x64 | Supported | Uses hostdb binaries |
|
|
12
|
-
| darwin | arm64 | Supported | Uses hostdb binaries (Apple Silicon) |
|
|
13
|
-
| linux | x64 | Supported | Uses hostdb binaries |
|
|
14
|
-
| linux | arm64 | Supported | Uses hostdb binaries |
|
|
15
|
-
| win32 | x64 | Supported | Uses hostdb binaries |
|
|
16
|
-
|
|
17
|
-
## Binary Packaging
|
|
18
|
-
|
|
19
|
-
### Archive Format
|
|
20
|
-
- **Unix (macOS/Linux)**: `tar.gz`
|
|
21
|
-
- **Windows**: `zip`
|
|
22
|
-
|
|
23
|
-
### Archive Structure - Platform Differences
|
|
24
|
-
|
|
25
|
-
**macOS:**
|
|
26
|
-
```
|
|
27
|
-
questdb/
|
|
28
|
-
├── questdb.sh # Startup script (at ROOT, not bin/)
|
|
29
|
-
├── questdb.jar # Main application
|
|
30
|
-
├── lib/ # Dependencies
|
|
31
|
-
└── jre/ # Bundled JRE
|
|
32
|
-
└── bin/
|
|
33
|
-
└── java
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
**Linux:**
|
|
37
|
-
```
|
|
38
|
-
questdb/
|
|
39
|
-
├── bin/
|
|
40
|
-
│ └── questdb.sh # Startup script (in bin/)
|
|
41
|
-
├── lib/
|
|
42
|
-
│ └── jvm/ # JRE in different location
|
|
43
|
-
│ └── */bin/java
|
|
44
|
-
└── questdb.jar
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
**Windows:**
|
|
48
|
-
```
|
|
49
|
-
questdb/
|
|
50
|
-
├── questdb.exe # Windows executable
|
|
51
|
-
├── questdb.jar
|
|
52
|
-
├── lib/
|
|
53
|
-
└── jre/
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
### Startup Script Location Varies
|
|
57
|
-
|
|
58
|
-
The binary manager checks BOTH root and `bin/` subdirectory for `questdb.sh`/`questdb.exe`:
|
|
59
|
-
|
|
60
|
-
```typescript
|
|
61
|
-
// Check both locations
|
|
62
|
-
const shPathRoot = join(binPath, 'questdb.sh')
|
|
63
|
-
const shPathBin = join(binPath, 'bin', 'questdb.sh')
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
### Custom moveExtractedEntries
|
|
67
|
-
|
|
68
|
-
QuestDB has a custom `moveExtractedEntries()` that preserves its unique structure - it does NOT move `questdb.sh` to `bin/` like other engines.
|
|
69
|
-
|
|
70
|
-
### Version Map Sync
|
|
71
|
-
|
|
72
|
-
```typescript
|
|
73
|
-
export const QUESTDB_VERSION_MAP: Record<string, string> = {
|
|
74
|
-
'9': '9.2.3',
|
|
75
|
-
}
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
## Implementation Details
|
|
79
|
-
|
|
80
|
-
### Binary Manager
|
|
81
|
-
|
|
82
|
-
QuestDB uses `BaseBinaryManager` with extensive customizations:
|
|
83
|
-
- `isInstalled()` - Checks both root and bin/ locations
|
|
84
|
-
- `moveExtractedEntries()` - Preserves QuestDB's directory structure
|
|
85
|
-
- `postExtract()` - Makes script executable, creates java symlink
|
|
86
|
-
- `verify()` - Custom verification (no --version flag)
|
|
87
|
-
|
|
88
|
-
### Java-Based Architecture
|
|
89
|
-
|
|
90
|
-
QuestDB is a Java application with bundled JRE:
|
|
91
|
-
- No Java installation required
|
|
92
|
-
- JRE included in download
|
|
93
|
-
- Startup via shell script (Unix) or exe (Windows)
|
|
94
|
-
|
|
95
|
-
### Post-Extraction Setup
|
|
96
|
-
|
|
97
|
-
The `postExtract()` method:
|
|
98
|
-
1. Makes `questdb.sh` executable (`chmod 755`)
|
|
99
|
-
2. Creates symlink: `java` -> `jre/bin/java` (macOS)
|
|
100
|
-
|
|
101
|
-
The symlink is needed because `questdb.sh` checks for `$BASE/java` to determine if JRE is bundled.
|
|
102
|
-
|
|
103
|
-
### Multi-Port Configuration - CRITICAL
|
|
104
|
-
|
|
105
|
-
QuestDB uses **FOUR ports** per container:
|
|
106
|
-
|
|
107
|
-
| Port | Offset | Default | Purpose |
|
|
108
|
-
|------|--------|---------|---------|
|
|
109
|
-
| PostgreSQL Wire | Base | 8812 | SQL connections via psql |
|
|
110
|
-
| HTTP Web Console | +188 | 9000 | REST API and Web UI |
|
|
111
|
-
| HTTP Min Server | +191 | 9003 | Health checks/metrics |
|
|
112
|
-
| ILP TCP | +197 | 9009 | InfluxDB Line Protocol |
|
|
113
|
-
|
|
114
|
-
**Multi-container conflicts**: When running multiple QuestDB containers, ALL ports must be configured uniquely via environment variables:
|
|
115
|
-
- `QDB_PG_NET_BIND_TO`
|
|
116
|
-
- `QDB_HTTP_BIND_TO`
|
|
117
|
-
- `QDB_HTTP_MIN_NET_BIND_TO`
|
|
118
|
-
- `QDB_LINE_TCP_NET_BIND_TO`
|
|
119
|
-
|
|
120
|
-
The HTTP Min Server (default 9003) causes conflicts if not configured per-container.
|
|
121
|
-
|
|
122
|
-
### PID Handling - Shell Script Problem
|
|
123
|
-
|
|
124
|
-
**Critical gotcha**: When spawning `questdb.sh start`, the shell script forks the Java process and exits immediately. The PID from `proc.pid` is the shell's PID, which becomes invalid within milliseconds.
|
|
125
|
-
|
|
126
|
-
QuestDB also doesn't create its own PID file in daemon mode.
|
|
127
|
-
|
|
128
|
-
**Solution**: After startup, find the actual Java process by port:
|
|
129
|
-
|
|
130
|
-
```typescript
|
|
131
|
-
// After waitForReady() succeeds:
|
|
132
|
-
const pids = await platformService.findProcessByPort(port)
|
|
133
|
-
if (pids.length > 0) {
|
|
134
|
-
await writeFile(pidFile, pids[0].toString(), 'utf-8')
|
|
135
|
-
}
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
Stop also uses port lookup first, falling back to PID file.
|
|
139
|
-
|
|
140
|
-
### Default Configuration
|
|
141
|
-
|
|
142
|
-
- **Default PG Port**: 8812 (auto-increments on conflict)
|
|
143
|
-
- **HTTP Port**: PG port + 188 (default 9000)
|
|
144
|
-
- **Default Database**: `qdb` (single database model)
|
|
145
|
-
- **Default Credentials**: `admin` / `quest`
|
|
146
|
-
- **Log File**: `questdb.log` in container directory
|
|
147
|
-
- **Config File**: `server.conf` in `conf/` subdirectory
|
|
148
|
-
|
|
149
|
-
### Connection String Format
|
|
150
|
-
|
|
151
|
-
```
|
|
152
|
-
postgresql://admin:quest@127.0.0.1:{port}/qdb
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
Uses PostgreSQL wire protocol.
|
|
156
|
-
|
|
157
|
-
### Health Check
|
|
158
|
-
|
|
159
|
-
Uses HTTP GET to Web Console:
|
|
160
|
-
```bash
|
|
161
|
-
curl http://127.0.0.1:{httpPort}/
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
Or via psql if available:
|
|
165
|
-
```bash
|
|
166
|
-
psql -h 127.0.0.1 -p {port} -U admin -d qdb -c "SELECT 1;"
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
### Critical: Background Process Stdio
|
|
170
|
-
|
|
171
|
-
Like CockroachDB and SurrealDB, **MUST use `stdio: ['ignore', 'ignore', 'ignore']`**:
|
|
172
|
-
|
|
173
|
-
```typescript
|
|
174
|
-
const proc = spawn(questdbBinary, args, {
|
|
175
|
-
stdio: ['ignore', 'ignore', 'ignore'],
|
|
176
|
-
detached: true,
|
|
177
|
-
cwd: containerDir,
|
|
178
|
-
env: {
|
|
179
|
-
QDB_HTTP_BIND_TO: `0.0.0.0:${httpPort}`,
|
|
180
|
-
QDB_HTTP_MIN_NET_BIND_TO: `0.0.0.0:${port + 191}`,
|
|
181
|
-
QDB_PG_NET_BIND_TO: `0.0.0.0:${port}`,
|
|
182
|
-
QDB_LINE_TCP_NET_BIND_TO: `0.0.0.0:${port + 197}`,
|
|
183
|
-
},
|
|
184
|
-
windowsHide: true,
|
|
185
|
-
})
|
|
186
|
-
proc.unref()
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
### Startup Commands
|
|
190
|
-
|
|
191
|
-
**Unix:**
|
|
192
|
-
```bash
|
|
193
|
-
questdb.sh start -d {dataDir} -t {name} -n
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
**Windows:**
|
|
197
|
-
```bash
|
|
198
|
-
questdb.exe -d {dataDir} -t {name}
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
Note: Windows doesn't support 'start' subcommand reliably.
|
|
202
|
-
|
|
203
|
-
The `-t {name}` flag is the process tag - allows multiple instances by unique identifier.
|
|
204
|
-
|
|
205
|
-
## Backup & Restore
|
|
206
|
-
|
|
207
|
-
### Cross-Engine Dependency
|
|
208
|
-
|
|
209
|
-
**Critical**: QuestDB backup/restore requires PostgreSQL's `psql` binary to connect via wire protocol.
|
|
210
|
-
|
|
211
|
-
```typescript
|
|
212
|
-
// Find psql from SpinDB's PostgreSQL engine
|
|
213
|
-
let psqlPath = await configManager.getBinaryPath('psql')
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
**Warning**: Deleting PostgreSQL will break QuestDB backup/restore!
|
|
217
|
-
|
|
218
|
-
This is different from FerretDB's postgresql-documentdb dependency, which is deleted WITH FerretDB. PostgreSQL is a standalone engine, so it's kept.
|
|
219
|
-
|
|
220
|
-
### Timestamp Column
|
|
221
|
-
|
|
222
|
-
QuestDB tables have a designated timestamp column that can have any name. Don't assume `timestamp` - query `tables()` for `designatedTimestamp` column name.
|
|
223
|
-
|
|
224
|
-
## Web Console
|
|
225
|
-
|
|
226
|
-
QuestDB has a built-in Web Console at:
|
|
227
|
-
```
|
|
228
|
-
http://localhost:{httpPort}/
|
|
229
|
-
```
|
|
230
|
-
|
|
231
|
-
Where `httpPort = pgPort + 188` (default 9000).
|
|
232
|
-
|
|
233
|
-
## Integration Test Notes
|
|
234
|
-
|
|
235
|
-
### psql Dependency
|
|
236
|
-
|
|
237
|
-
Integration tests need `psql` available (from PostgreSQL engine).
|
|
238
|
-
|
|
239
|
-
### Test Fixtures
|
|
240
|
-
|
|
241
|
-
Located in `tests/fixtures/questdb/seeds/`:
|
|
242
|
-
- SQL data for time-series testing
|
|
243
|
-
|
|
244
|
-
## Docker E2E Test Notes
|
|
245
|
-
|
|
246
|
-
QuestDB Docker E2E tests verify:
|
|
247
|
-
- Multi-port startup
|
|
248
|
-
- PostgreSQL wire protocol
|
|
249
|
-
- HTTP Web Console
|
|
250
|
-
- Time-series operations
|
|
251
|
-
|
|
252
|
-
### Windows Extended Timeout
|
|
253
|
-
|
|
254
|
-
Windows needs more time for Java to start and release file locks:
|
|
255
|
-
- Startup timeout: 90000ms (vs 60000ms on Unix)
|
|
256
|
-
- Graceful shutdown wait: 5000ms (vs 2000ms on Unix)
|
|
257
|
-
|
|
258
|
-
## Known Issues & Gotchas
|
|
259
|
-
|
|
260
|
-
### 1. Shell Script PID is Useless
|
|
261
|
-
|
|
262
|
-
`questdb.sh` forks and exits. Must find Java process by port.
|
|
263
|
-
|
|
264
|
-
### 2. Four Ports Required
|
|
265
|
-
|
|
266
|
-
Each container needs four unique ports. HTTP Min Server (port +191) is often forgotten.
|
|
267
|
-
|
|
268
|
-
### 3. psql Dependency
|
|
269
|
-
|
|
270
|
-
Backup/restore needs PostgreSQL's psql binary. Inform users of this cross-engine dependency.
|
|
271
|
-
|
|
272
|
-
### 4. stdio Must Be 'ignore'
|
|
273
|
-
|
|
274
|
-
Same as CockroachDB/SurrealDB - prevents Node.js from hanging.
|
|
275
|
-
|
|
276
|
-
### 5. Archive Structure Varies
|
|
277
|
-
|
|
278
|
-
macOS has `questdb.sh` at root, Linux has it in `bin/`. The binary manager handles both.
|
|
279
|
-
|
|
280
|
-
### 6. No --version Flag
|
|
281
|
-
|
|
282
|
-
QuestDB is Java-based. Verification checks script/jar existence, not version output.
|
|
283
|
-
|
|
284
|
-
### 7. Single Database Model
|
|
285
|
-
|
|
286
|
-
QuestDB uses a single database (`qdb`). "createDatabase" is effectively a no-op.
|
|
287
|
-
|
|
288
|
-
### 8. Java Symlink (macOS)
|
|
289
|
-
|
|
290
|
-
The `java` symlink at base level is needed for `questdb.sh` to find the bundled JRE.
|
|
291
|
-
|
|
292
|
-
## CI/CD Notes
|
|
293
|
-
|
|
294
|
-
### GitHub Actions Cache Step
|
|
295
|
-
|
|
296
|
-
```yaml
|
|
297
|
-
- name: Cache QuestDB binaries
|
|
298
|
-
uses: actions/cache@v4
|
|
299
|
-
with:
|
|
300
|
-
path: ~/.spindb/bin/questdb-*
|
|
301
|
-
key: questdb-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('engines/questdb/version-maps.ts') }}
|
|
302
|
-
```
|
|
303
|
-
|
|
304
|
-
### Windows CI Considerations
|
|
305
|
-
|
|
306
|
-
Windows tests use extended timeouts due to Java startup time.
|
|
307
|
-
|
|
308
|
-
## Time-Series SQL Examples
|
|
309
|
-
|
|
310
|
-
### Create Table
|
|
311
|
-
```sql
|
|
312
|
-
CREATE TABLE sensors (
|
|
313
|
-
timestamp TIMESTAMP,
|
|
314
|
-
sensor_id SYMBOL,
|
|
315
|
-
value DOUBLE
|
|
316
|
-
) TIMESTAMP(timestamp) PARTITION BY DAY;
|
|
317
|
-
```
|
|
318
|
-
|
|
319
|
-
### Insert Data
|
|
320
|
-
```sql
|
|
321
|
-
INSERT INTO sensors VALUES (now(), 'sensor1', 23.5);
|
|
322
|
-
```
|
|
323
|
-
|
|
324
|
-
### Time-Based Queries
|
|
325
|
-
```sql
|
|
326
|
-
-- Last hour
|
|
327
|
-
SELECT * FROM sensors WHERE timestamp > now() - 1h;
|
|
328
|
-
|
|
329
|
-
-- Sample by 1 minute
|
|
330
|
-
SELECT timestamp, avg(value) FROM sensors SAMPLE BY 1m;
|
|
331
|
-
|
|
332
|
-
-- Latest value per sensor
|
|
333
|
-
SELECT * FROM sensors LATEST ON timestamp PARTITION BY sensor_id;
|
|
334
|
-
```
|
|
@@ -1,220 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* QuestDB Backup Implementation
|
|
3
|
-
*
|
|
4
|
-
* QuestDB uses a custom backup format based on SQL exports.
|
|
5
|
-
* Since QuestDB uses PostgreSQL wire protocol, we can use psql for backup
|
|
6
|
-
* but QuestDB has its own SQL extensions for time-series data.
|
|
7
|
-
*
|
|
8
|
-
* Backup approach:
|
|
9
|
-
* - Export table schemas using SHOW CREATE TABLE
|
|
10
|
-
* - Export data using SELECT with proper ordering
|
|
11
|
-
* - Output as standard SQL statements
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
import { writeFile, stat } from 'fs/promises'
|
|
15
|
-
import { spawn } from 'child_process'
|
|
16
|
-
import { configManager } from '../../core/config-manager'
|
|
17
|
-
import { logDebug, logWarning } from '../../core/error-handler'
|
|
18
|
-
import type { ContainerConfig, BackupOptions, BackupResult } from '../../types'
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Execute a query against QuestDB using psql (PostgreSQL protocol)
|
|
22
|
-
*/
|
|
23
|
-
async function executeQuery(
|
|
24
|
-
port: number,
|
|
25
|
-
database: string,
|
|
26
|
-
query: string,
|
|
27
|
-
): Promise<string> {
|
|
28
|
-
// Try to find psql from config or PATH
|
|
29
|
-
let psqlPath = await configManager.getBinaryPath('psql')
|
|
30
|
-
if (!psqlPath) {
|
|
31
|
-
// Fall back to system psql
|
|
32
|
-
psqlPath = 'psql'
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
return new Promise((resolve, reject) => {
|
|
36
|
-
const args = [
|
|
37
|
-
'-h',
|
|
38
|
-
'127.0.0.1',
|
|
39
|
-
'-p',
|
|
40
|
-
String(port),
|
|
41
|
-
'-U',
|
|
42
|
-
'admin',
|
|
43
|
-
'-d',
|
|
44
|
-
database,
|
|
45
|
-
'-t', // Tuples only (no headers)
|
|
46
|
-
'-A', // Unaligned output
|
|
47
|
-
'-c',
|
|
48
|
-
query,
|
|
49
|
-
]
|
|
50
|
-
|
|
51
|
-
const proc = spawn(psqlPath!, args, {
|
|
52
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
53
|
-
env: { ...process.env, PGPASSWORD: 'quest' },
|
|
54
|
-
})
|
|
55
|
-
|
|
56
|
-
let stdout = ''
|
|
57
|
-
let stderr = ''
|
|
58
|
-
|
|
59
|
-
proc.stdout.on('data', (data: Buffer) => {
|
|
60
|
-
stdout += data.toString()
|
|
61
|
-
})
|
|
62
|
-
proc.stderr.on('data', (data: Buffer) => {
|
|
63
|
-
stderr += data.toString()
|
|
64
|
-
})
|
|
65
|
-
|
|
66
|
-
proc.on('close', (code) => {
|
|
67
|
-
if (code === 0) {
|
|
68
|
-
resolve(stdout.trim())
|
|
69
|
-
} else {
|
|
70
|
-
reject(new Error(`psql error: ${stderr || `exit code ${code}`}`))
|
|
71
|
-
}
|
|
72
|
-
})
|
|
73
|
-
proc.on('error', (err) => {
|
|
74
|
-
reject(new Error(`Failed to execute psql: ${err.message}`))
|
|
75
|
-
})
|
|
76
|
-
})
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Create a backup of a QuestDB database
|
|
81
|
-
*/
|
|
82
|
-
export async function createBackup(
|
|
83
|
-
container: ContainerConfig,
|
|
84
|
-
outputPath: string,
|
|
85
|
-
options: BackupOptions,
|
|
86
|
-
): Promise<BackupResult> {
|
|
87
|
-
const { port } = container
|
|
88
|
-
const database = options.database || container.database || 'qdb'
|
|
89
|
-
|
|
90
|
-
const lines: string[] = []
|
|
91
|
-
lines.push('-- QuestDB backup generated by SpinDB')
|
|
92
|
-
lines.push(`-- Database: ${database}`)
|
|
93
|
-
lines.push(`-- Date: ${new Date().toISOString()}`)
|
|
94
|
-
lines.push('')
|
|
95
|
-
|
|
96
|
-
try {
|
|
97
|
-
// Get list of tables
|
|
98
|
-
const tablesQuery = `SELECT table_name FROM tables() WHERE table_name NOT LIKE 'sys.%'`
|
|
99
|
-
const tablesResult = await executeQuery(port, database, tablesQuery)
|
|
100
|
-
const tables = tablesResult.split('\n').filter((t) => t.trim())
|
|
101
|
-
|
|
102
|
-
logDebug(`Found ${tables.length} tables in database ${database}`)
|
|
103
|
-
|
|
104
|
-
for (const table of tables) {
|
|
105
|
-
if (!table.trim()) continue
|
|
106
|
-
|
|
107
|
-
lines.push(`-- Table: ${table}`)
|
|
108
|
-
lines.push('')
|
|
109
|
-
|
|
110
|
-
// Get CREATE TABLE statement
|
|
111
|
-
try {
|
|
112
|
-
const createQuery = `SHOW CREATE TABLE "${table}"`
|
|
113
|
-
let createResult = await executeQuery(port, database, createQuery)
|
|
114
|
-
if (createResult) {
|
|
115
|
-
// QuestDB's SHOW CREATE TABLE uses single quotes for table names,
|
|
116
|
-
// but SQL requires double quotes for identifiers. Fix the quoting.
|
|
117
|
-
// Also, the output sometimes ends with ; already, avoid double ;;
|
|
118
|
-
createResult = createResult
|
|
119
|
-
.replace(/^CREATE TABLE '([^']+)'/, 'CREATE TABLE "$1"')
|
|
120
|
-
.replace(/;$/, '') // Remove trailing semicolon if present
|
|
121
|
-
lines.push(createResult + ';')
|
|
122
|
-
lines.push('')
|
|
123
|
-
}
|
|
124
|
-
} catch (error) {
|
|
125
|
-
logWarning(`Could not get CREATE TABLE for ${table}: ${error}`)
|
|
126
|
-
continue
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
// Export table data
|
|
130
|
-
try {
|
|
131
|
-
// Try to get column names using table_columns() function
|
|
132
|
-
// This ensures INSERT statements have explicit column names for reliability
|
|
133
|
-
let columns: string[] = []
|
|
134
|
-
let useExplicitColumns = false
|
|
135
|
-
|
|
136
|
-
try {
|
|
137
|
-
const columnsQuery = `SELECT column FROM table_columns('${table}')`
|
|
138
|
-
const columnsResult = await executeQuery(port, database, columnsQuery)
|
|
139
|
-
columns = columnsResult.split('\n').filter((c) => c.trim())
|
|
140
|
-
useExplicitColumns = columns.length > 0
|
|
141
|
-
} catch {
|
|
142
|
-
// table_columns() failed - will use SELECT * without explicit column names
|
|
143
|
-
logDebug(`Could not get columns for ${table}, using SELECT *`)
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
// Get the designated timestamp column (if any) for ordering
|
|
147
|
-
// QuestDB tables have a designated timestamp column that can have any name
|
|
148
|
-
let orderClause = ''
|
|
149
|
-
try {
|
|
150
|
-
const tsQuery = `SELECT designatedTimestamp FROM tables() WHERE table_name = '${table}'`
|
|
151
|
-
const tsResult = await executeQuery(port, database, tsQuery)
|
|
152
|
-
if (tsResult && tsResult.trim()) {
|
|
153
|
-
orderClause = ` ORDER BY "${tsResult.trim()}"`
|
|
154
|
-
}
|
|
155
|
-
} catch {
|
|
156
|
-
// No designated timestamp or query failed - export without ordering
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
// Build SELECT query - use explicit columns if available, otherwise SELECT *
|
|
160
|
-
const columnList = useExplicitColumns
|
|
161
|
-
? columns.map((c) => `"${c}"`).join(', ')
|
|
162
|
-
: '*'
|
|
163
|
-
const dataQuery = `SELECT ${columnList} FROM "${table}"${orderClause}`
|
|
164
|
-
const dataResult = await executeQuery(port, database, dataQuery)
|
|
165
|
-
|
|
166
|
-
if (dataResult) {
|
|
167
|
-
const rows = dataResult.split('\n').filter((r) => r.trim())
|
|
168
|
-
lines.push(`-- Data for ${table}: ${rows.length} rows`)
|
|
169
|
-
|
|
170
|
-
// Generate INSERT statements
|
|
171
|
-
for (const row of rows) {
|
|
172
|
-
// Parse the pipe-delimited output and convert to INSERT
|
|
173
|
-
// Trim each value to handle Windows CRLF line endings
|
|
174
|
-
const values = row.split('|').map((v) => {
|
|
175
|
-
const trimmed = v.trim()
|
|
176
|
-
if (trimmed === '' || trimmed === 'null') return 'NULL'
|
|
177
|
-
// Check if value looks like a number (int or float)
|
|
178
|
-
if (/^-?\d+(\.\d+)?$/.test(trimmed)) {
|
|
179
|
-
return trimmed // Don't quote numbers
|
|
180
|
-
}
|
|
181
|
-
// Escape single quotes and wrap strings
|
|
182
|
-
return `'${trimmed.replace(/'/g, "''")}'`
|
|
183
|
-
})
|
|
184
|
-
|
|
185
|
-
// Use explicit column names if available, otherwise positional VALUES
|
|
186
|
-
if (useExplicitColumns) {
|
|
187
|
-
lines.push(
|
|
188
|
-
`INSERT INTO "${table}" (${columnList}) VALUES (${values.join(', ')});`,
|
|
189
|
-
)
|
|
190
|
-
} else {
|
|
191
|
-
lines.push(
|
|
192
|
-
`INSERT INTO "${table}" VALUES (${values.join(', ')});`,
|
|
193
|
-
)
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
lines.push('')
|
|
197
|
-
}
|
|
198
|
-
} catch (error) {
|
|
199
|
-
logWarning(`Could not export data for ${table}: ${error}`)
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
// Write backup file
|
|
204
|
-
const content = lines.join('\n')
|
|
205
|
-
await writeFile(outputPath, content, 'utf-8')
|
|
206
|
-
|
|
207
|
-
// Get file size
|
|
208
|
-
const stats = await stat(outputPath)
|
|
209
|
-
|
|
210
|
-
return {
|
|
211
|
-
path: outputPath,
|
|
212
|
-
format: 'sql',
|
|
213
|
-
size: stats.size,
|
|
214
|
-
}
|
|
215
|
-
} catch (error) {
|
|
216
|
-
throw new Error(
|
|
217
|
-
`Failed to create QuestDB backup: ${error instanceof Error ? error.message : String(error)}`,
|
|
218
|
-
)
|
|
219
|
-
}
|
|
220
|
-
}
|