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,466 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ClickHouse restore module
|
|
3
|
-
* Supports SQL-based restores using clickhouse client
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import { spawn } from 'child_process'
|
|
7
|
-
import { open } from 'fs/promises'
|
|
8
|
-
import { existsSync, statSync, createReadStream } from 'fs'
|
|
9
|
-
import { logDebug, logWarning } from '../../core/error-handler'
|
|
10
|
-
import {
|
|
11
|
-
requireClickHousePath,
|
|
12
|
-
validateClickHouseIdentifier,
|
|
13
|
-
escapeClickHouseIdentifier,
|
|
14
|
-
} from './cli-utils'
|
|
15
|
-
import type { BackupFormat, RestoreResult } from '../../types'
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* SQL keywords that indicate a ClickHouse SQL backup
|
|
19
|
-
*/
|
|
20
|
-
const CLICKHOUSE_SQL_KEYWORDS = [
|
|
21
|
-
'CREATE TABLE',
|
|
22
|
-
'CREATE DATABASE',
|
|
23
|
-
'INSERT INTO',
|
|
24
|
-
'ALTER TABLE',
|
|
25
|
-
'DROP TABLE',
|
|
26
|
-
'SELECT',
|
|
27
|
-
'ATTACH',
|
|
28
|
-
'DETACH',
|
|
29
|
-
]
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Check if file content looks like ClickHouse SQL
|
|
33
|
-
* Only reads first 8KB to avoid loading large files into memory
|
|
34
|
-
*/
|
|
35
|
-
async function looksLikeClickHouseSql(filePath: string): Promise<boolean> {
|
|
36
|
-
try {
|
|
37
|
-
// Read only first 8KB - enough for several lines of SQL statements
|
|
38
|
-
// Using 8KB (vs 4KB for Redis/Valkey) since SQL statements can be longer
|
|
39
|
-
const HEADER_SIZE = 8192
|
|
40
|
-
const buffer = Buffer.alloc(HEADER_SIZE)
|
|
41
|
-
|
|
42
|
-
const fd = await open(filePath, 'r')
|
|
43
|
-
let bytesRead: number
|
|
44
|
-
try {
|
|
45
|
-
const result = await fd.read(buffer, 0, HEADER_SIZE, 0)
|
|
46
|
-
bytesRead = result.bytesRead
|
|
47
|
-
} finally {
|
|
48
|
-
await fd.close()
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
const content = buffer.toString('utf-8', 0, bytesRead)
|
|
52
|
-
const lines = content.split(/\r?\n/)
|
|
53
|
-
|
|
54
|
-
let sqlStatementsFound = 0
|
|
55
|
-
const linesToCheck = 20
|
|
56
|
-
let checkedLines = 0
|
|
57
|
-
|
|
58
|
-
for (const line of lines) {
|
|
59
|
-
// Stop after checking linesToCheck lines
|
|
60
|
-
if (checkedLines >= linesToCheck) break
|
|
61
|
-
|
|
62
|
-
const trimmed = line.trim().toUpperCase()
|
|
63
|
-
|
|
64
|
-
// Skip empty lines and comments (don't count toward linesToCheck)
|
|
65
|
-
if (!trimmed || trimmed.startsWith('--')) continue
|
|
66
|
-
|
|
67
|
-
checkedLines++
|
|
68
|
-
|
|
69
|
-
// Check for SQL keywords
|
|
70
|
-
for (const keyword of CLICKHOUSE_SQL_KEYWORDS) {
|
|
71
|
-
if (trimmed.startsWith(keyword)) {
|
|
72
|
-
sqlStatementsFound++
|
|
73
|
-
break
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
// Early success if we found 2 or more SQL statements
|
|
78
|
-
if (sqlStatementsFound >= 2) {
|
|
79
|
-
return true
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
return sqlStatementsFound > 0
|
|
84
|
-
} catch {
|
|
85
|
-
return false
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* Detect backup format from file
|
|
91
|
-
* Supports:
|
|
92
|
-
* - SQL: DDL + INSERT statements
|
|
93
|
-
*/
|
|
94
|
-
export async function detectBackupFormat(
|
|
95
|
-
filePath: string,
|
|
96
|
-
): Promise<BackupFormat> {
|
|
97
|
-
if (!existsSync(filePath)) {
|
|
98
|
-
throw new Error(`Backup file not found: ${filePath}`)
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
const stats = statSync(filePath)
|
|
102
|
-
|
|
103
|
-
if (stats.isDirectory()) {
|
|
104
|
-
return {
|
|
105
|
-
format: 'unknown',
|
|
106
|
-
description: 'Directory found - ClickHouse restore expects a single file',
|
|
107
|
-
restoreCommand: 'ClickHouse requires a single .sql file for restore',
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
// Check file extension first for .sql files
|
|
112
|
-
if (filePath.endsWith('.sql')) {
|
|
113
|
-
return {
|
|
114
|
-
format: 'sql',
|
|
115
|
-
description: 'ClickHouse SQL backup',
|
|
116
|
-
restoreCommand:
|
|
117
|
-
'Execute SQL statements via clickhouse client (spindb restore handles this)',
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
// Content-based detection
|
|
122
|
-
if (await looksLikeClickHouseSql(filePath)) {
|
|
123
|
-
return {
|
|
124
|
-
format: 'sql',
|
|
125
|
-
description: 'ClickHouse SQL backup (detected by content)',
|
|
126
|
-
restoreCommand:
|
|
127
|
-
'Execute SQL statements via clickhouse client (spindb restore handles this)',
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
return {
|
|
132
|
-
format: 'unknown',
|
|
133
|
-
description: 'Unknown backup format',
|
|
134
|
-
restoreCommand: 'Use .sql file with ClickHouse SQL statements',
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
// Restore options for ClickHouse
|
|
139
|
-
export type RestoreOptions = {
|
|
140
|
-
containerName: string
|
|
141
|
-
port: number
|
|
142
|
-
database?: string
|
|
143
|
-
version?: string
|
|
144
|
-
// Drop existing tables before restore
|
|
145
|
-
clean?: boolean
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
/**
|
|
149
|
-
* Execute a ClickHouse query and return the result
|
|
150
|
-
*/
|
|
151
|
-
async function executeQuery(
|
|
152
|
-
clickhousePath: string,
|
|
153
|
-
port: number,
|
|
154
|
-
database: string,
|
|
155
|
-
query: string,
|
|
156
|
-
): Promise<string> {
|
|
157
|
-
return new Promise<string>((resolve, reject) => {
|
|
158
|
-
const args = [
|
|
159
|
-
'client',
|
|
160
|
-
'--host',
|
|
161
|
-
'127.0.0.1',
|
|
162
|
-
'--port',
|
|
163
|
-
String(port),
|
|
164
|
-
'--database',
|
|
165
|
-
database,
|
|
166
|
-
'--query',
|
|
167
|
-
query,
|
|
168
|
-
]
|
|
169
|
-
|
|
170
|
-
const proc = spawn(clickhousePath, args, {
|
|
171
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
172
|
-
})
|
|
173
|
-
|
|
174
|
-
let stdout = ''
|
|
175
|
-
let stderr = ''
|
|
176
|
-
|
|
177
|
-
proc.stdout.on('data', (data: Buffer) => {
|
|
178
|
-
stdout += data.toString()
|
|
179
|
-
})
|
|
180
|
-
|
|
181
|
-
proc.stderr.on('data', (data: Buffer) => {
|
|
182
|
-
stderr += data.toString()
|
|
183
|
-
})
|
|
184
|
-
|
|
185
|
-
proc.on('close', (code) => {
|
|
186
|
-
if (code === 0) {
|
|
187
|
-
resolve(stdout.trim())
|
|
188
|
-
} else {
|
|
189
|
-
reject(new Error(`Query failed: ${stderr || `exit code ${code}`}`))
|
|
190
|
-
}
|
|
191
|
-
})
|
|
192
|
-
|
|
193
|
-
proc.on('error', reject)
|
|
194
|
-
})
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
/**
|
|
198
|
-
* Get list of tables in a database
|
|
199
|
-
*/
|
|
200
|
-
async function getTablesInDatabase(
|
|
201
|
-
clickhousePath: string,
|
|
202
|
-
port: number,
|
|
203
|
-
database: string,
|
|
204
|
-
): Promise<string[]> {
|
|
205
|
-
try {
|
|
206
|
-
// Validate database name
|
|
207
|
-
validateClickHouseIdentifier(database, 'database')
|
|
208
|
-
const escapedDb = database.replace(/'/g, "''")
|
|
209
|
-
|
|
210
|
-
const result = await executeQuery(
|
|
211
|
-
clickhousePath,
|
|
212
|
-
port,
|
|
213
|
-
database,
|
|
214
|
-
`SELECT name FROM system.tables WHERE database = '${escapedDb}'`,
|
|
215
|
-
)
|
|
216
|
-
|
|
217
|
-
if (!result) {
|
|
218
|
-
return []
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
return result
|
|
222
|
-
.split('\n')
|
|
223
|
-
.map((line) => line.trim())
|
|
224
|
-
.filter(Boolean)
|
|
225
|
-
} catch (error) {
|
|
226
|
-
logDebug(`Failed to get tables: ${error}`)
|
|
227
|
-
return []
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
/**
|
|
232
|
-
* Drop all tables in a database (for clean restore)
|
|
233
|
-
*/
|
|
234
|
-
async function dropAllTables(
|
|
235
|
-
clickhousePath: string,
|
|
236
|
-
port: number,
|
|
237
|
-
database: string,
|
|
238
|
-
): Promise<void> {
|
|
239
|
-
const tables = await getTablesInDatabase(clickhousePath, port, database)
|
|
240
|
-
|
|
241
|
-
if (tables.length === 0) {
|
|
242
|
-
logDebug('No existing tables to drop')
|
|
243
|
-
return
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
logDebug(
|
|
247
|
-
`Dropping ${tables.length} existing table(s) in database "${database}"`,
|
|
248
|
-
)
|
|
249
|
-
|
|
250
|
-
for (const table of tables) {
|
|
251
|
-
try {
|
|
252
|
-
// Validate table name
|
|
253
|
-
validateClickHouseIdentifier(table, 'table')
|
|
254
|
-
const escapedTable = escapeClickHouseIdentifier(table)
|
|
255
|
-
|
|
256
|
-
await executeQuery(
|
|
257
|
-
clickhousePath,
|
|
258
|
-
port,
|
|
259
|
-
database,
|
|
260
|
-
`DROP TABLE IF EXISTS ${escapedTable}`,
|
|
261
|
-
)
|
|
262
|
-
logDebug(`Dropped table: ${table}`)
|
|
263
|
-
} catch (error) {
|
|
264
|
-
// Log warning but continue with other tables
|
|
265
|
-
logWarning(`Failed to drop table "${table}": ${error}`)
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
/**
|
|
271
|
-
* Restore from SQL backup
|
|
272
|
-
* Streams SQL statements to clickhouse client
|
|
273
|
-
*/
|
|
274
|
-
async function restoreSqlBackup(
|
|
275
|
-
backupPath: string,
|
|
276
|
-
port: number,
|
|
277
|
-
database: string,
|
|
278
|
-
version?: string,
|
|
279
|
-
clean: boolean = false,
|
|
280
|
-
): Promise<RestoreResult> {
|
|
281
|
-
const clickhousePath = await requireClickHousePath(version)
|
|
282
|
-
|
|
283
|
-
// If clean mode, drop existing tables first
|
|
284
|
-
if (clean) {
|
|
285
|
-
logDebug('Clean mode: dropping existing tables before restore')
|
|
286
|
-
await dropAllTables(clickhousePath, port, database)
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
return new Promise<RestoreResult>((resolve, reject) => {
|
|
290
|
-
const args = [
|
|
291
|
-
'client',
|
|
292
|
-
'--host',
|
|
293
|
-
'127.0.0.1',
|
|
294
|
-
'--port',
|
|
295
|
-
String(port),
|
|
296
|
-
'--database',
|
|
297
|
-
database,
|
|
298
|
-
'--multiquery',
|
|
299
|
-
]
|
|
300
|
-
|
|
301
|
-
const proc = spawn(clickhousePath, args, {
|
|
302
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
303
|
-
})
|
|
304
|
-
|
|
305
|
-
let stdout = ''
|
|
306
|
-
let stderr = ''
|
|
307
|
-
let streamError: Error | null = null
|
|
308
|
-
|
|
309
|
-
proc.stdout.on('data', (data: Buffer) => {
|
|
310
|
-
stdout += data.toString()
|
|
311
|
-
})
|
|
312
|
-
|
|
313
|
-
proc.stderr.on('data', (data: Buffer) => {
|
|
314
|
-
stderr += data.toString()
|
|
315
|
-
})
|
|
316
|
-
|
|
317
|
-
proc.on('close', (code) => {
|
|
318
|
-
// If there was a stream error, report it (include stderr for context)
|
|
319
|
-
if (streamError) {
|
|
320
|
-
const errorParts = [streamError.message]
|
|
321
|
-
if (stderr && stderr.trim()) {
|
|
322
|
-
errorParts.push(`ClickHouse stderr: ${stderr.trim()}`)
|
|
323
|
-
}
|
|
324
|
-
reject(new Error(errorParts.join('. ')))
|
|
325
|
-
return
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
if (code === 0) {
|
|
329
|
-
resolve({
|
|
330
|
-
format: 'sql',
|
|
331
|
-
stdout: stdout || 'SQL statements executed successfully',
|
|
332
|
-
stderr: stderr || undefined,
|
|
333
|
-
code: 0,
|
|
334
|
-
})
|
|
335
|
-
} else {
|
|
336
|
-
reject(
|
|
337
|
-
new Error(
|
|
338
|
-
`clickhouse client exited with code ${code}${stderr ? `: ${stderr}` : ''}`,
|
|
339
|
-
),
|
|
340
|
-
)
|
|
341
|
-
}
|
|
342
|
-
})
|
|
343
|
-
|
|
344
|
-
proc.on('error', (error) => {
|
|
345
|
-
reject(new Error(`Failed to spawn clickhouse client: ${error.message}`))
|
|
346
|
-
})
|
|
347
|
-
|
|
348
|
-
// Stream backup file to clickhouse client stdin
|
|
349
|
-
const fileStream = createReadStream(backupPath, { encoding: 'utf-8' })
|
|
350
|
-
|
|
351
|
-
// Handle stdin errors (e.g., EPIPE when client exits early due to SQL error)
|
|
352
|
-
proc.stdin.on('error', (error: NodeJS.ErrnoException) => {
|
|
353
|
-
// EPIPE means the client closed its stdin (likely exited due to error)
|
|
354
|
-
// The actual error message will come from stderr in the 'close' handler
|
|
355
|
-
if (error.code === 'EPIPE') {
|
|
356
|
-
streamError = new Error(
|
|
357
|
-
'ClickHouse client closed connection early (likely SQL syntax error)',
|
|
358
|
-
)
|
|
359
|
-
} else {
|
|
360
|
-
streamError = new Error(
|
|
361
|
-
`Failed to write to clickhouse client: ${error.message}`,
|
|
362
|
-
)
|
|
363
|
-
}
|
|
364
|
-
fileStream.destroy()
|
|
365
|
-
})
|
|
366
|
-
|
|
367
|
-
fileStream.on('error', (error) => {
|
|
368
|
-
streamError = new Error(`Failed to read backup file: ${error.message}`)
|
|
369
|
-
fileStream.destroy()
|
|
370
|
-
proc.stdin.end()
|
|
371
|
-
})
|
|
372
|
-
|
|
373
|
-
fileStream.pipe(proc.stdin)
|
|
374
|
-
})
|
|
375
|
-
}
|
|
376
|
-
|
|
377
|
-
/**
|
|
378
|
-
* Restore from backup
|
|
379
|
-
* Supports:
|
|
380
|
-
* - SQL: Execute statements via clickhouse client (ClickHouse must be running)
|
|
381
|
-
*/
|
|
382
|
-
export async function restoreBackup(
|
|
383
|
-
backupPath: string,
|
|
384
|
-
options: RestoreOptions,
|
|
385
|
-
): Promise<RestoreResult> {
|
|
386
|
-
const { port, database = 'default', version, clean = false } = options
|
|
387
|
-
|
|
388
|
-
if (!existsSync(backupPath)) {
|
|
389
|
-
throw new Error(`Backup file not found: ${backupPath}`)
|
|
390
|
-
}
|
|
391
|
-
|
|
392
|
-
// Detect backup format
|
|
393
|
-
const format = await detectBackupFormat(backupPath)
|
|
394
|
-
logDebug(`Detected backup format: ${format.format}`)
|
|
395
|
-
|
|
396
|
-
if (format.format === 'sql') {
|
|
397
|
-
return restoreSqlBackup(backupPath, port, database, version, clean)
|
|
398
|
-
}
|
|
399
|
-
|
|
400
|
-
throw new Error(
|
|
401
|
-
`Invalid backup format: ${format.format}. Use .sql file with ClickHouse SQL statements.`,
|
|
402
|
-
)
|
|
403
|
-
}
|
|
404
|
-
|
|
405
|
-
/**
|
|
406
|
-
* Parse ClickHouse connection string
|
|
407
|
-
* Format: clickhouse://[user:password@]host[:port][/database]
|
|
408
|
-
*/
|
|
409
|
-
export function parseConnectionString(connectionString: string): {
|
|
410
|
-
host: string
|
|
411
|
-
port: number
|
|
412
|
-
database: string
|
|
413
|
-
user?: string
|
|
414
|
-
password?: string
|
|
415
|
-
} {
|
|
416
|
-
if (!connectionString || typeof connectionString !== 'string') {
|
|
417
|
-
throw new Error(
|
|
418
|
-
'Invalid ClickHouse connection string: expected a non-empty string',
|
|
419
|
-
)
|
|
420
|
-
}
|
|
421
|
-
|
|
422
|
-
let url: URL
|
|
423
|
-
try {
|
|
424
|
-
url = new URL(connectionString)
|
|
425
|
-
} catch (error) {
|
|
426
|
-
// Mask credentials in error message if present
|
|
427
|
-
const sanitized = connectionString.replace(
|
|
428
|
-
/\/\/([^:]+):([^@]+)@/,
|
|
429
|
-
'//***:***@',
|
|
430
|
-
)
|
|
431
|
-
throw new Error(
|
|
432
|
-
`Invalid ClickHouse connection string: "${sanitized}". ` +
|
|
433
|
-
`Expected format: clickhouse://[user:password@]host[:port][/database]`,
|
|
434
|
-
{ cause: error },
|
|
435
|
-
)
|
|
436
|
-
}
|
|
437
|
-
|
|
438
|
-
// Validate protocol
|
|
439
|
-
if (
|
|
440
|
-
url.protocol !== 'clickhouse:' &&
|
|
441
|
-
url.protocol !== 'http:' &&
|
|
442
|
-
url.protocol !== 'https:'
|
|
443
|
-
) {
|
|
444
|
-
throw new Error(
|
|
445
|
-
`Invalid ClickHouse connection string: unsupported protocol "${url.protocol}". ` +
|
|
446
|
-
`Expected "clickhouse://", "http://", or "https://"`,
|
|
447
|
-
)
|
|
448
|
-
}
|
|
449
|
-
|
|
450
|
-
const host = url.hostname || '127.0.0.1'
|
|
451
|
-
// Default port depends on protocol - 9000 for native, 8123 for HTTP
|
|
452
|
-
const defaultPort =
|
|
453
|
-
url.protocol === 'http:' || url.protocol === 'https:' ? 8123 : 9000
|
|
454
|
-
const port = parseInt(url.port, 10) || defaultPort
|
|
455
|
-
|
|
456
|
-
// Database is in pathname
|
|
457
|
-
const database = url.pathname.replace(/^\//, '') || 'default'
|
|
458
|
-
|
|
459
|
-
return {
|
|
460
|
-
host,
|
|
461
|
-
port,
|
|
462
|
-
database,
|
|
463
|
-
user: url.username || undefined,
|
|
464
|
-
password: url.password || undefined,
|
|
465
|
-
}
|
|
466
|
-
}
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ClickHouse Version Maps
|
|
3
|
-
*
|
|
4
|
-
* TEMPORARY: This version map will be replaced by the hostdb npm package once published.
|
|
5
|
-
* Until then, manually keep this in sync with robertjbass/hostdb releases.json:
|
|
6
|
-
* https://github.com/robertjbass/hostdb/blob/main/releases.json
|
|
7
|
-
*
|
|
8
|
-
* When updating versions:
|
|
9
|
-
* 1. Check hostdb releases.json for available versions
|
|
10
|
-
* 2. Update CLICKHOUSE_VERSION_MAP to match
|
|
11
|
-
*
|
|
12
|
-
* ClickHouse uses YY.MM.X.build versioning (e.g., 25.12.3.21)
|
|
13
|
-
* We use the YY.MM format as the major version identifier.
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
import { logDebug } from '../../core/error-handler'
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Map of ClickHouse versions to their latest stable patch versions.
|
|
20
|
-
* Must match versions available in hostdb releases.json.
|
|
21
|
-
*/
|
|
22
|
-
export const CLICKHOUSE_VERSION_MAP: Record<string, string> = {
|
|
23
|
-
// 1-part: year -> latest release for that year
|
|
24
|
-
'25': '25.12.3.21',
|
|
25
|
-
// 2-part: year.month -> latest
|
|
26
|
-
'25.12': '25.12.3.21',
|
|
27
|
-
// 3-part: year.month.patch -> latest build
|
|
28
|
-
'25.12.3': '25.12.3.21',
|
|
29
|
-
// 4-part: exact version (identity mapping)
|
|
30
|
-
'25.12.3.21': '25.12.3.21',
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Supported major ClickHouse versions (YY.MM format).
|
|
35
|
-
* Used for grouping and display purposes.
|
|
36
|
-
*/
|
|
37
|
-
export const SUPPORTED_MAJOR_VERSIONS = ['25.12']
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Get the full version string for a version.
|
|
41
|
-
*
|
|
42
|
-
* @param version - Version (e.g., '25.12', '25.12.3', '25.12.3.21')
|
|
43
|
-
* @returns Full version string (e.g., '25.12.3.21') or null if not supported
|
|
44
|
-
*/
|
|
45
|
-
export function getFullVersion(version: string): string | null {
|
|
46
|
-
return CLICKHOUSE_VERSION_MAP[version] || null
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Normalize a version string to full version format.
|
|
51
|
-
*
|
|
52
|
-
* @param version - Version string (e.g., '25.12', '25.12.3', '25.12.3.21')
|
|
53
|
-
* @returns Normalized version (e.g., '25.12.3.21')
|
|
54
|
-
*/
|
|
55
|
-
export function normalizeVersion(version: string): string {
|
|
56
|
-
// If it's in the version map, return the mapped value
|
|
57
|
-
const fullVersion = CLICKHOUSE_VERSION_MAP[version]
|
|
58
|
-
if (fullVersion) {
|
|
59
|
-
return fullVersion
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
// Unknown version - warn and return as-is
|
|
63
|
-
const parts = version.split('.')
|
|
64
|
-
|
|
65
|
-
// ClickHouse versions can be 2-4 parts (YY.MM, YY.MM.X, YY.MM.X.build)
|
|
66
|
-
const isValidFormat =
|
|
67
|
-
parts.length >= 2 &&
|
|
68
|
-
parts.length <= 4 &&
|
|
69
|
-
parts.every((p) => /^\d+$/.test(p))
|
|
70
|
-
|
|
71
|
-
if (!isValidFormat) {
|
|
72
|
-
logDebug(
|
|
73
|
-
`ClickHouse version '${version}' has invalid format, may not be available in hostdb`,
|
|
74
|
-
)
|
|
75
|
-
} else {
|
|
76
|
-
logDebug(
|
|
77
|
-
`ClickHouse version '${version}' not in version map, may not be available in hostdb`,
|
|
78
|
-
)
|
|
79
|
-
}
|
|
80
|
-
return version
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
/**
|
|
84
|
-
* Get the major version (YY.MM) from a full version string.
|
|
85
|
-
*
|
|
86
|
-
* @param version - Full version (e.g., '25.12.3.21')
|
|
87
|
-
* @returns Major version (e.g., '25.12')
|
|
88
|
-
*/
|
|
89
|
-
export function getMajorVersion(version: string): string {
|
|
90
|
-
const parts = version.split('.')
|
|
91
|
-
if (parts.length >= 2) {
|
|
92
|
-
return `${parts[0]}.${parts[1]}`
|
|
93
|
-
}
|
|
94
|
-
return version
|
|
95
|
-
}
|
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ClickHouse version validation utilities
|
|
3
|
-
* Handles version parsing, comparison, and compatibility checking
|
|
4
|
-
*
|
|
5
|
-
* ClickHouse uses YY.MM.X.build versioning (e.g., 25.12.3.21)
|
|
6
|
-
* - YY: Year (2-digit)
|
|
7
|
-
* - MM: Month
|
|
8
|
-
* - X: Patch number
|
|
9
|
-
* - build: Build number
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Parse a ClickHouse version string into components
|
|
14
|
-
* Handles formats like "25.12.3.21", "25.12.3", "25.12", "v25.12.3.21"
|
|
15
|
-
*/
|
|
16
|
-
export function parseVersion(versionString: string): {
|
|
17
|
-
year: number
|
|
18
|
-
month: number
|
|
19
|
-
patch: number
|
|
20
|
-
build: number
|
|
21
|
-
raw: string
|
|
22
|
-
} | null {
|
|
23
|
-
const cleaned = versionString.replace(/^v/, '').trim()
|
|
24
|
-
const parts = cleaned.split('.')
|
|
25
|
-
|
|
26
|
-
if (parts.length < 2) return null
|
|
27
|
-
|
|
28
|
-
const year = parseInt(parts[0], 10)
|
|
29
|
-
const month = parseInt(parts[1], 10)
|
|
30
|
-
const patch = parts[2] ? parseInt(parts[2], 10) : 0
|
|
31
|
-
const build = parts[3] ? parseInt(parts[3], 10) : 0
|
|
32
|
-
|
|
33
|
-
if (isNaN(year) || isNaN(month)) return null
|
|
34
|
-
if (parts[2] && isNaN(patch)) return null
|
|
35
|
-
if (parts[3] && isNaN(build)) return null
|
|
36
|
-
|
|
37
|
-
return { year, month, patch, build, raw: cleaned }
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Check if a ClickHouse version is supported by SpinDB
|
|
42
|
-
* Minimum supported version: 24.1.0.0
|
|
43
|
-
*/
|
|
44
|
-
export function isVersionSupported(version: string): boolean {
|
|
45
|
-
const parsed = parseVersion(version)
|
|
46
|
-
if (!parsed) return false
|
|
47
|
-
|
|
48
|
-
// Support ClickHouse 24.x and newer
|
|
49
|
-
return parsed.year >= 24
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Get major version from full version string (YY.MM format)
|
|
54
|
-
* e.g., "25.12.3.21" -> "25.12"
|
|
55
|
-
*/
|
|
56
|
-
export function getMajorVersion(version: string): string {
|
|
57
|
-
const parsed = parseVersion(version)
|
|
58
|
-
if (!parsed) return version
|
|
59
|
-
return `${parsed.year}.${parsed.month}`
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Get major.minor.patch version from full version string
|
|
64
|
-
* e.g., "25.12.3.21" -> "25.12.3"
|
|
65
|
-
*/
|
|
66
|
-
export function getMajorMinorPatchVersion(version: string): string {
|
|
67
|
-
const parsed = parseVersion(version)
|
|
68
|
-
if (!parsed) return version
|
|
69
|
-
return `${parsed.year}.${parsed.month}.${parsed.patch}`
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* Compare two ClickHouse versions
|
|
74
|
-
* Returns: -1 if a < b, 0 if a == b, 1 if a > b, null if either version cannot be parsed
|
|
75
|
-
*/
|
|
76
|
-
export function compareVersions(a: string, b: string): number | null {
|
|
77
|
-
const parsedA = parseVersion(a)
|
|
78
|
-
const parsedB = parseVersion(b)
|
|
79
|
-
|
|
80
|
-
if (!parsedA || !parsedB) {
|
|
81
|
-
return null
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
if (parsedA.year !== parsedB.year) {
|
|
85
|
-
return parsedA.year < parsedB.year ? -1 : 1
|
|
86
|
-
}
|
|
87
|
-
if (parsedA.month !== parsedB.month) {
|
|
88
|
-
return parsedA.month < parsedB.month ? -1 : 1
|
|
89
|
-
}
|
|
90
|
-
if (parsedA.patch !== parsedB.patch) {
|
|
91
|
-
return parsedA.patch < parsedB.patch ? -1 : 1
|
|
92
|
-
}
|
|
93
|
-
if (parsedA.build !== parsedB.build) {
|
|
94
|
-
return parsedA.build < parsedB.build ? -1 : 1
|
|
95
|
-
}
|
|
96
|
-
return 0
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Check if a backup version is compatible with the restore version
|
|
101
|
-
* ClickHouse is generally forward-compatible for backups
|
|
102
|
-
*/
|
|
103
|
-
export function isVersionCompatible(
|
|
104
|
-
backupVersion: string,
|
|
105
|
-
restoreVersion: string,
|
|
106
|
-
): { compatible: boolean; warning?: string } {
|
|
107
|
-
const backup = parseVersion(backupVersion)
|
|
108
|
-
const restore = parseVersion(restoreVersion)
|
|
109
|
-
|
|
110
|
-
if (!backup || !restore) {
|
|
111
|
-
return {
|
|
112
|
-
compatible: true,
|
|
113
|
-
warning: 'Could not parse versions, proceeding with restore',
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
// Cannot restore backup from much newer version
|
|
118
|
-
// Calculate total months to handle year boundaries correctly
|
|
119
|
-
const backupMonths = backup.year * 12 + backup.month
|
|
120
|
-
const restoreMonths = restore.year * 12 + restore.month
|
|
121
|
-
|
|
122
|
-
if (backupMonths > restoreMonths + 6) {
|
|
123
|
-
// More than 6 months newer
|
|
124
|
-
return {
|
|
125
|
-
compatible: false,
|
|
126
|
-
warning: `Cannot restore ClickHouse ${backupVersion} backup to ${restoreVersion} server. The backup is from a much newer version.`,
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
// Allow same or close versions
|
|
131
|
-
if (backupMonths === restoreMonths) {
|
|
132
|
-
return { compatible: true }
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
// Allow upgrading from older version
|
|
136
|
-
if (restoreMonths > backupMonths) {
|
|
137
|
-
return {
|
|
138
|
-
compatible: true,
|
|
139
|
-
warning: `Restoring ClickHouse ${backupVersion} backup to ${restoreVersion} server. Schema may need updates.`,
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
// Restoring to slightly older version (within 6 months)
|
|
144
|
-
return {
|
|
145
|
-
compatible: true,
|
|
146
|
-
warning: `Restoring ClickHouse ${backupVersion} backup to older ${restoreVersion} server. Some features may not be available.`,
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
// Validate that a version string matches supported format
|
|
151
|
-
export function isValidVersionFormat(version: string): boolean {
|
|
152
|
-
const parsed = parseVersion(version)
|
|
153
|
-
return parsed !== null
|
|
154
|
-
}
|